home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / education / pe038.dms / pe038.adf / game.AMOS / game.amosSourceCode
AMOS Source Code  |  1991-10-25  |  51KB  |  2,619 lines

  1. Set Buffer 28
  2. Set Sprite Buffer 32
  3. Close Editor 
  4. Close Workbench 
  5. PAWS=2 : A#=1.2
  6. Global PAWS
  7. Hide : Break Off 
  8. If Chip Free>250000 Then LMEM=True : Else LMEM=False
  9. Rem Dir$="df0:"
  10. Dim MNU$(6,6),ITEM$(6),COMPLETED(6),X(20),MAGWRD$(5),WRD$(50),WRD(5),QUESTION$(5,8),QUESTION(5),HTIME$(10),HNAME$(10),JUMB$(5,8),CODE$(5,8)
  11. For I=1 To 15
  12.    Channel I To Bob I
  13. Next I
  14. Priority On 
  15. MNU$(0,0)="OFF"
  16. MNU$(0,1)="ON "
  17. MNU$(1,0)="LOW   "
  18. MNU$(1,1)="MEDIUM"
  19. MNU$(1,2)="HIGH  "
  20. MNU$(3,0)="ALL     "
  21. MNU$(3,1)="FLASH   "
  22. MNU$(3,2)="COMPLETE"
  23. MNU$(3,3)="CRACK-IT"
  24. MNU$(3,4)="HANG-UP "
  25. MNU$(3,5)="JUMBLES "
  26. MNU$(4,0)="NO "
  27. MNU$(4,1)="YES"
  28. MNU$(5,0)="SMALL"
  29. MNU$(5,1)="LARGE"
  30. MNU$(6,0)="NO "
  31. MNU$(6,1)="YES"
  32. Gosub RETRIEVE_DEFAULTS
  33. Gosub RETRIEVE_HIGH_SCORES
  34. Default Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$EA0
  35. Screen Open 0,320,200,16,Lowres : Screen Open 1,320,200,16,Lowres
  36. Curs Off : Hide : Flash Off 
  37. Autoback 0
  38. Paper 0 : Locate 0,20 : Centre Space$(40) : Update 
  39. CONTROL_SCREEN:
  40. Rem For I=0 To 50
  41. Rem    TEMP$(I)="" 
  42. Rem Next I 
  43. Fade PAWS
  44. Wait PAWS*3
  45. Auto View Off 
  46. Rem Screen Open 1,320,200,16,Lowres
  47. Curs Off 
  48. Paper 0
  49. Clw 
  50. SCET$="cetlanderScetlanderScetlanderScetlanderS"
  51. Pen 6
  52. For I=1 To 22
  53.    SCET$=Right$(SCET$,1)+Left$(SCET$,39)
  54.    Locate 0,I : Print SCET$
  55. Next I
  56. Ink 0
  57. Bar 24,32 To 295,159
  58. Set Font FONT_NUMBER
  59. Ink 10,0 : Text 43,6*8,"HENRIETTA's BOOK of SPELLS"
  60. Pen 15 : Locate 0,8 : Centre "Control Screen"
  61. Pen 8 : Locate 0,16 : Centre "Copyright (c) Scetlander 1991"
  62. Pen 13 : Locate 0,17 : Centre "Based on a program by TR Tulloch"
  63. Pen 15
  64. If CONCEAL=0
  65.    Locate 0,23 : Centre "Press <Space> to continue,"
  66.    Cdown 
  67.    Centre "<Ctrl-T> for Parent/Teacher Section"
  68. Else 
  69.    Locate 0,24 : Centre "Press <Space> to continue"
  70. End If 
  71. For I=0 To 50
  72.    WRD$(I)=""
  73. Next I
  74. Pen 10 : Locate 4,19 : Print "V1.O DEMO"
  75. Pen 15
  76. View 
  77. Auto View On 
  78. 270
  79. Fade PAWS,0,$444,0,$AAA,$626,$640,$F00,$F80,$FF0,$8F0,$F0,$60,$4A,$8F,$F,$FFF
  80. Wait PAWS*16
  81. Clear Key 
  82. Repeat 
  83.    K$=Inkey$
  84.    K=Scancode
  85.    A=Asc(K$)
  86. Until K$<>"" or K<>0
  87. If K=20 and(Key Shift and 8)
  88.    Locate 0,23
  89.    Print Space$(79);
  90.    Locate 0,24
  91.    Centre "Loading Parent/Teacher Section"
  92.    X=Free
  93.    CLEAR_BANKS: Run "parent.amos"
  94. Else 
  95.    If K$="Q"
  96.       Default 
  97.       End 
  98.    Else 
  99.       If K$<>" "
  100.          Goto 270
  101.       End If 
  102.    End If 
  103. End If 
  104. Fade PAWS
  105. Wait PAWS*16
  106. X=Free
  107. GAME_INSTRUCTIONS:
  108. Fade PAWS
  109. Wait PAWS*16
  110. Rem Screen Open 1,320,200,16,Lowres
  111. Curs Off : Flash Off : Scroll Off 
  112. Paper 0
  113. Clw 
  114. Ink 1,0
  115. Set Font FONT_NUMBER
  116. Text 43,12,"HENRIETTA's BOOK of SPELLS"
  117. Pen 2 : Locate 0,3 : Print "Following their earlier adventures,"
  118. Print "Henry and Henrietta have now been"
  119. Print "married happily for two weeks."
  120. Cdown 
  121. Print "However, almost inevitably, Henry's"
  122. Print "inquisitive nature led him to Castle"
  123. Print "Spellalot - home of Morgana the Morbid!"
  124. Print "There followed a brief exchange of"
  125. Print "views, when points were raised and"
  126. Print "opinions freely expressed. As a result,"
  127. Print "Henry is now a fat frog!"
  128. Cdown 
  129. Print "Help Henrietta find the magic letters"
  130. Print "which make a magic word and restore"
  131. Print "Henry to his former good-looking self."
  132. DUMFLG=False
  133. Fade PAWS,$8,$C00,$CC0,$C0
  134. Wait PAWS*16
  135. ENTER_NAME:
  136. Left$(NAME$,1)=Upper$(Left$(NAME$,1))
  137. Pen 3
  138. Locate 0,22 : Print "Type in your name  ";
  139. Pen 1
  140. Print NAME$;"_ ";
  141. If Not(DUMFLG)
  142.    Clear Key 
  143.    Repeat 
  144.       K$=Inkey$
  145.       K=Scancode
  146.       If NAME$="" and K=$45
  147.          Fade PAWS
  148.          Wait 16*PAWS
  149.          Goto CONTROL_SCREEN
  150.       End If 
  151.    Until(K=$41 or K=$45) or((K$>="a") and(K$<="z")) or((K$>="A") and(K$<="Z")) or((K$>="0") and(K$<="9")) or((K$=Chr$(13)) and(NAME$<>""))
  152.    If(((K$>="a") and(K$<="z")) or((K$>="A") and(K$<="Z")) or((K$>="0") and(K$<="9")))
  153.       NAME$=K$
  154.       Locate 19,22 : Print Upper$(K$);"_";Space$(20)
  155.       DUMFLG=True
  156.    Else 
  157.       If K=$45
  158.          Fade PAWS
  159.          Wait PAWS*16
  160.          Goto CONTROL_SCREEN
  161.       Else 
  162.          DUMFLG=True
  163.          Goto 370
  164.       End If 
  165.    End If 
  166. End If 
  167. Clear Key 
  168. Repeat 
  169.    K$=Inkey$
  170.    K=Scancode
  171. Until(((((K$>="a") and(K$<="z")) or((K$>="A") and(K$<="Z")) or((K$>="0") and(K$<="9")) or((K$=" ") and(NAME$<>""))) and Len(NAME$)<14) or((K$=Chr$(13)) and(NAME$-" "<>"")) or K=$45 or((K=$41) and(NAME$<>"")))
  172. 370
  173. If K=$45
  174.    Fade PAWS
  175.    Wait PAWS*16
  176.    Goto CONTROL_SCREEN
  177. Else 
  178.    If K=$41
  179.       NAME$=Left$(NAME$,Len(NAME$)-1)
  180.       Goto ENTER_NAME
  181.    Else 
  182.       If K$=Chr$(13)
  183.          Locate 0,22 : Print Space$(40)
  184.       Else 
  185.          NAME$=NAME$+K$
  186.          Goto ENTER_NAME
  187.       End If 
  188.    End If 
  189. End If 
  190. 380
  191. REDO:
  192. Pen 3
  193. Locate 0,21
  194. Print "Okay ";NAME$;", what size of words"
  195. Print "do you want to try? (5 to 9 letters)";
  196. Pen 1
  197. If WRDSZE>0 Then Print WRDSZE;"_" Else Print " _ "
  198. Clear Key 
  199. Repeat 
  200.    K$=Inkey$
  201.    K=Scancode
  202. Until((K$>="5") and(K$<="9")) or K=65 or K=69 or((K$=Chr$(13)) and WRDSZE<>0)
  203. If K=$45
  204.    Fade PAWS
  205.    Wait PAWS*16
  206.    Goto CONTROL_SCREEN
  207. Else 
  208.    If K=$41
  209.       WRDSZE=0
  210.       Goto 380
  211.    Else 
  212.       If((K$>="5") and(K$<="9"))
  213.          WRDSZE=Val(K$)
  214.          Goto 380
  215.       Else 
  216.          If K$<>Chr$(13)
  217.             Goto 380
  218.          End If 
  219.       End If 
  220.    End If 
  221. End If 
  222. Locate 0,21
  223. Print Space$(119)
  224. Locate 0,22
  225. If WRDSZE<>6 Then DEMO_MESSAGE["Selecting a word length","This demo version is set up so that","you can only work with 6 letter","words.  The full version enables you","to use all 5 lengths."] : Goto REDO
  226. Centre "Loading Words - Please Wait"
  227. Gosub RETRIEVE_WORDS
  228. Gosub RETRIEVE_MAGIC_WORDS
  229. Fade PAWS
  230. Wait PAWS*16
  231. Paper 0
  232. Clw 
  233. ITEM$(1)="Flash     "
  234. ITEM$(2)="Complete  "
  235. ITEM$(3)="Crack-It  "
  236. ITEM$(4)="Hang-Up   "
  237. ITEM$(5)="Jumbles   "
  238. HIPOS=-1
  239. CLOK=0
  240. OLD_TIME=0
  241. Timer=0
  242. HOUR=0
  243. MI=0
  244. EL_TIME=0
  245. HOUR$="00"
  246. MI$="00"
  247. EL_TIME$="00"
  248. MAGICW$=""
  249. T=Rnd(4)
  250. For I=1 To 5
  251.    MAGICW$=MAGICW$+Mid$(MAGWRD$(T),I,1)
  252.    COMPLETED(I)=0
  253. Next I
  254. If SECTION<>0
  255.    For I=1 To 5
  256.       ITEM$(I)=Left$(ITEM$(SECTION),9)+Str$(I)-" "
  257.    Next I
  258. End If 
  259. MAGICL$=Space$(5)
  260. MAGICA$=""
  261. For I=1 To 5
  262.    MAGICA$=MAGICA$+Mid$(MAGICW$,I,1)
  263. Next I
  264. Gosub JUMBLE_MAGIC_WORD
  265. For G=1 To 5
  266.    For Q=0 To 7
  267.       ANOTHER_WORD:
  268.       A$=WRD$(Rnd(T0TWRD))
  269.       For QQ=0 To 7
  270.       If QUESTION$(G,QQ)=A$ Then Goto ANOTHER_WORD Else Next QQ
  271.       QUESTION$(G,Q)=A$
  272.    Next Q
  273.    WRD(G)=0
  274. Next G
  275. If SECTION<>3 and SECTION<>5
  276.    For Q=0 To 7
  277.       WD$=QUESTION$(5,Q)
  278.       Gosub GAME5_JUMBLE
  279.       TEMP1$=TEMP$
  280.       WD$=QUESTION$(3,Q)
  281.       Gosub ENCRYPT_WORD
  282.       JUMB$(5,Q)=""
  283.       CODE$(3,Q)=""
  284.       For I=1 To Len(TEMP1$)
  285.          CODE$(3,Q)=CODE$(3,Q)+Mid$(COD$,I,1)
  286.          JUMB$(5,Q)=JUMB$(5,Q)+Mid$(TEMP1$,I,1)
  287.       Next I
  288.    Next Q
  289. End If 
  290. If SECTION=3
  291.    For G=1 To 5
  292.       For Q=0 To 7
  293.          WD$=QUESTION$(G,Q)
  294.          Gosub ENCRYPT_WORD
  295.          CODE$(G,Q)=""
  296.          For I=1 To Len(COD$)
  297.             CODE$(G,Q)=CODE$(G,Q)+Mid$(COD$,I,1)
  298.          Next I
  299.       Next Q
  300.    Next G
  301. End If 
  302. If SECTION=5
  303.    For G=1 To 5
  304.       For Q=0 To 7
  305.          WD$=QUESTION$(G,Q)
  306.          Gosub GAME5_JUMBLE
  307.          TEMP1$=TEMP$
  308.          JUMB$(G,Q)=""
  309.          For I=1 To Len(TEMP1$)
  310.             JUMB$(G,Q)=JUMB$(G,Q)+Mid$(TEMP1$,I,1)
  311.          Next I
  312.       Next Q
  313.    Next G
  314. End If 
  315. On Error Goto DISK_READ_ERROR_LOWRES
  316. Fade PAWS
  317. Wait PAWS*16
  318. CLEAR_BANKS
  319. Load "data/spell1a.abk"
  320. If LMEM
  321.    Load "data/spell5.abk"
  322.    Load "data/spell7.abk"
  323.    Load "data/spell8.abk"
  324.    Load "data/book.abk"
  325. End If 
  326. Screen Close 0
  327. On Error Goto BBER
  328. SELECT_GAME:
  329. Wait Vbl 
  330. Bob Off 
  331. Default Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$EA0
  332. Screen Open 1,320,200,16,Lowres : Hide : Curs Off : Flash Off : Fade PAWS : Wait PAWS*16
  333. Rem Double Buffer  
  334. Curs Off 
  335. Flash Off 
  336. SHWRD=False
  337. OPT=0
  338. Gosub FIND_NEXT_OPTION
  339. If OPT>5
  340.    Goto TRANSFORM_HENRY
  341. Else 
  342.    Fade PAWS : Wait PAWS*16
  343.    If LMEM=True
  344.       Unpack 6
  345.    Else 
  346.      Erase 5 : Erase 6 : Erase 7 : Erase 8
  347.      On Error Goto DISK_READ_ERROR_LOWRES
  348.      Load Iff "data/book.iff"
  349.      On Error Goto BBER
  350.    End If 
  351.    Pen 10
  352.    Paper 7
  353.    For I=1 To 5
  354.       Locate 23,3+I*3
  355.       Print ITEM$(I)
  356.       Locate 35,3+I*3
  357.       Print Mid$(MAGICL$,I,1)
  358.    Next I
  359.    Set Font FONT_NUMBER
  360.    W=Text Length(NAME$)
  361.    Ink 10,7
  362.    Text 81-W/2,9*8,NAME$
  363.    Pen 5
  364.    Paper 7
  365.    Locate 29,21 : Print Left$(HOUR$,2);":";Left$(MI$,2);":";Left$(EL_TIME$,2)
  366.    Screen Swap 
  367.    Fade PAWS,$0,$FDB,$DB9,$B96,$962,$640,$420,$FFD,$F40,$F00,$600,$4F4,$2B6,$666,$BBB,$FFF
  368.    X=Free
  369. End If 
  370. OPTION_LOOP:
  371. Repeat 
  372.    Clear Key 
  373.    Pen 15
  374.    Paper 0
  375.    Locate 23,3+OPT*3
  376.    Print ITEM$(OPT)
  377.    Repeat 
  378.       Gosub JUMBLE_WORDS
  379.       K$=Lower$(Inkey$) : K=Scancode : A=Asc(K$)
  380.    Until(K$<>"" or K<>0 or A<>0)
  381.    Pen 10
  382.    Paper 7
  383.    If K=$50 Then Goto SPELL_BOOK_HELP
  384.    If(K$="h") and(Key Shift and 8) Then Goto DISPLAY_HIGH_SCORES
  385.    If K=$4C
  386.       Gosub NOISE_BELL
  387.       Locate 23,3+OPT*3 : Print ITEM$(OPT)
  388.       Gosub FIND_LAST_OPTION
  389.       If OPT<1
  390.          OPT=6
  391.          Gosub FIND_LAST_OPTION
  392.       End If 
  393.    End If 
  394.    If K=$4D
  395.       Gosub NOISE_BELL
  396.       Locate 23,3+OPT*3 : Print ITEM$(OPT)
  397.       Gosub FIND_NEXT_OPTION
  398.       If OPT>5
  399.          OPT=0
  400.          Gosub FIND_NEXT_OPTION
  401.       End If 
  402.    End If 
  403.    BOOK=False
  404.    If K=$45
  405.       BOOK=True
  406.       Gosub CONFIRM_QUIT
  407.       Goto OPTION_LOOP
  408.    Else 
  409.       If K$=" "
  410.          Gosub NOISE_BELL
  411.          Locate 23,3+OPT*3 : Print ITEM$(OPT)
  412.          Gosub FIND_NEXT_OPTION
  413.          If OPT>5
  414.             OPT=0
  415.             Gosub FIND_NEXT_OPTION
  416.          End If 
  417.       End If 
  418.    End If 
  419. Until K$=Chr$(13)
  420. ULINE=False
  421. If SECTION=0 Then GAME=OPT Else GAME=SECTION
  422. WRD(OPT)=0
  423. Rem Fade PAWS
  424. Wait PAWS*16
  425. Goto DISPLAY_MAIN_SCREEN
  426. FIND_NEXT_OPTION:
  427. For I=OPT+1 To 6
  428. If COMPLETED(I)<>0 Then Next I : Else OPT=I
  429. Return 
  430. FIND_LAST_OPTION:
  431. For I=OPT-1 To 0 Step -1
  432. If COMPLETED(I)<>0 Then Next I : Else OPT=I
  433. Return 
  434. SPELL_BOOK_HELP:
  435. Fade PAWS
  436. Wait PAWS*16
  437. Paper 0
  438. Clw 
  439. Pen 3 : Locate 1,1 : Print "HELP: Selecting an exercise"
  440. Pen 2 : Locate 1,4 : Print "To select an exercise, move the"
  441. Locate 1,5 : Print "highlight bar on to it.  Do this"
  442. Locate 1,6 : Print "by pressing <Space> or using the"
  443. Locate 1,7 : Print "cursor keys."
  444. Locate 1,9 : Print "To begin an exercise press <Enter>."
  445. Locate 1,11 : Print "To view the high score table,"
  446. Locate 1,12 : Print "press <Ctrl-H>."
  447. Pen 3 : Locate 1,23 : Print "Press <F1> or <Esc> to leave help"
  448. Fade PAWS,$8,$C00,$CC0,$C0
  449. Ink 1
  450. Box 0,0 To 319,199
  451. Box 3,3 To 315,195
  452. Clear Key 
  453. Repeat 
  454.    K$=Inkey$ : K=Scancode
  455. Until K=$45 or K=$50
  456. Fade PAWS
  457. Wait PAWS*16
  458. Paper 0
  459. Clw 
  460. Goto SELECT_GAME
  461. DISPLAY_MAIN_SCREEN:
  462. Cls 0
  463. Screen Open 1,320,200,16,Lowres
  464. Curs Off : Scroll Off : Hide On : Flash Off 
  465. Double Buffer 
  466. Autoback 2
  467. Fade PAWS
  468. Pen 15
  469. Paper 0
  470. Clw 
  471. If LMEM=False
  472.    On Error Goto DISK_READ_ERROR_LOWRES
  473.    Load "data/spell5.abk"
  474.    On Error Goto BBER
  475. End If 
  476. Unpack 5
  477. If GAME=1
  478.    For I=30 To 280 Step 64
  479.       Paste Bob I,100,43
  480.       Paste Bob I,148,43
  481.       Update 
  482.    Next I
  483. End If 
  484. If GAME=2
  485.    For I=52 To 248 Step 8
  486.       Paste Bob I,97,42
  487.       Paste Bob I,138,42
  488.    Next I
  489. End If 
  490. If GAME=3
  491.    If LMEM=False
  492.      On Error Goto DISK_READ_ERROR_LOWRES
  493.      Load "data/spell7.abk"
  494.      On Error Goto BBER
  495.    End If 
  496.    Unpack 7,32,99
  497.    Pen 6
  498.    Paper 12
  499.    Locate 1,23 : Centre "Now crack the code"
  500. End If 
  501. If GAME=4
  502.    If LMEM=False
  503.      On Error Goto DISK_READ_ERROR_LOWRES
  504.      Load "data/spell8.abk"
  505.      On Error Goto BBER
  506.    End If 
  507.    Unpack 8
  508.    Pen 6
  509.    Paper 12
  510.    Locate 1,23 : Centre "Choose a letter"
  511. End If 
  512. If GAME=5
  513.    For I=35 To 280 Step 64
  514.       Paste Bob I,120,43
  515.       Update 
  516.    Next I
  517.    For I=52 To 256 Step 8
  518.       Paste Bob I,110,42
  519.       Update 
  520.    Next I
  521.    Pen 6
  522.    Paper 12
  523.    Locate 1,23 : Centre "Type in the word"
  524. End If 
  525. Pen 15
  526. Paper 0
  527. Locate 23,2 : Print " ";Left$(ITEM$(OPT),9)-" ";" ";Right$(ITEM$(OPT),1)
  528. Locate 14,4 : Print Left$(MNU$(1,LEVEL),1)
  529. Bob Off 
  530. Wait Vbl 
  531. If GAME=1
  532.    Bob 3,50,80,16
  533.    Bob 4,270,80,28
  534.    Bob 1,50,120,10
  535.    Bob 6,250,148,39
  536.    Bob 2,266,138,74
  537.    SSX=250
  538.    FSX=250
  539. End If 
  540. If GAME=2
  541.    Bob 3,50,85,16
  542.    Bob 4,270,85,28
  543.    Bob 1,50,120,10
  544.    Bob 11,40,106,73
  545.    Bob 10,40,150,73
  546.    Bob 6,265,125,39
  547.    Bob 2,260,133,74
  548.    SSX=250
  549.    FSX=250
  550. End If 
  551. If GAME=3
  552.    Bob 3,280,117,17
  553.    Bob 4,260,155,28
  554.    Bob 1,45,111,1
  555.    Bob 6,153,97,39
  556.    Bob 2,70,164,82
  557. End If 
  558. If GAME=4
  559.    Bob 1,70,147,10
  560.    Bob 2,220,164,74
  561.    Bob 3,250,154,16
  562.    Bob 4,105,155,28
  563.    Bob 6,150,96,39
  564.    ST=0
  565.    ST2=1
  566.    ALLDONE=0
  567.    ALLDONE1=0
  568. End If 
  569. If GAME=5
  570.    Bob 1,54,93,10
  571.    Bob 2,64,164,82
  572.    Bob 3,266,101,16
  573.    Bob 4,265,155,28
  574.    Bob 6,152,121,39
  575. End If 
  576. Pen 15
  577. Paper 0
  578. OLDTIME=-1
  579. Timer=CLOK
  580. Gosub CLOCK_PRINT
  581. Screen Swap 
  582. Fade PAWS,$0,$FF,$6F,$642,$962,$FF0,$D00,$FBB,$4F0,$90,$222,$444,$666,$BBB,$DDD,$FFF
  583. Wait PAWS*16
  584. FINISH=False
  585. SHWRD=False
  586. ANSWER$=""
  587. ANSWER=0
  588. COUNT=0
  589. Gosub RETRIEVE_NEXT_WORD
  590. If GAME=3 Then Gosub ENCRYPT_WORD : Gosub KEY_PRINT
  591. Repeat 
  592.    Y_TEXT=20
  593.    TEX_LEN=Len(WD$)
  594.    Bob 15,21,0,96
  595.    Amal 15,"Anim 0,(96,5)(97,5)(98,5)(99,5)(100,5)(101,5)"
  596.    Amal On 
  597.    Bob 14,34,66,102
  598.    Amal 14,"Anim 0,(102,5)(103,5)(104,5)(105,5)"
  599.    Amal On 
  600.    AOCLUES=0
  601.    Gosub CLOCK_PRINT
  602.    Gosub UNDERLINE_TEXT
  603.    On GAME Gosub GAME1_INPUT,GAME2_INPUT,GAME3_INPUT,GAME4_INPUT,GAME5_INPUT
  604.    Gosub CHECK_ANSWER
  605.    Inc ANSWER
  606.    ANSWER$=""
  607. Until FINISH
  608. Goto SELECT_GAME
  609. GAME1_INPUT:
  610. GAME3_INPUT:
  611. ESC=False
  612. If GAME=1 and SHWRD=False
  613.    ADTIME=0
  614.    Gosub WORD_FLASH
  615.    If((K$>="a") and(K$<="z"))
  616.       ANSWER$=K$
  617.    End If 
  618. End If 
  619. 1020
  620. If GAME=1
  621.    Pen 6
  622.    Paper 12
  623.    Locate 1,23
  624.    Centre " Type in the word "
  625. End If 
  626. GAME1_LOOP:
  627. Repeat 
  628.    Pen 15
  629.    Paper 0
  630.    Locate X_TEXT,Y_TEXT
  631.    Print ANSWER$;"_";Space$(TEX_LEN-Len(ANSWER$)+1)
  632.    Repeat 
  633.       Gosub CLOCK_PRINT
  634.       K$=Lower$(Inkey$) : K=Scancode
  635.    Until K$<>"" or K<>0
  636.    L=Len(ANSWER$)
  637.    If L<TEX_LEN and((K$>="a") and(K$=<"z")) Then ANSWER$=ANSWER$+K$ : Goto HOOPY
  638.    If((K=$50) and GAME=1)
  639.       Inc AOCLUES
  640.       ADTIME=1
  641.       Gosub WORD_FLASH
  642.       Goto 1020
  643.    Else 
  644.       If((K=$50) and GAME=3)
  645.          Inc AOCLUES
  646.          ADTIME=1
  647.          Gosub GAME3_HELP
  648.          Goto 1020
  649.       Else 
  650.          If K=$45
  651.             Gosub CONFIRM_QUIT
  652.          End If 
  653.       End If 
  654.    End If 
  655.    If L>0 and K=$41
  656.       ANSWER$=Mid$(ANSWER$,1,L-1)
  657.       Goto GAME1_LOOP
  658.    End If 
  659.    If((K$>"z") or(K$<"a")) and(K$<>Chr$(13)) and(K$<>"")
  660.       Gosub DULL_THUD
  661.       Goto GAME1_LOOP
  662.    End If 
  663.    HOOPY:
  664. Until K$=Chr$(13)
  665. If Len(ANSWER$)<>Len(WD$) Then Gosub DULL_THUD : Goto GAME1_LOOP
  666. Amal Off 
  667. Gosub DISPLAY_TIME
  668. Return 
  669. GAME3_HELP:
  670. For I=1 To Len(WD$)
  671.    If Mid$(WD$,I,1)=Mid$(ANSWER$,I,1)
  672.    Next I
  673.    POS=Rnd(Len(WD$)-1)+1
  674.    TEMP$=Mid$(WD$,POS,1)
  675. Else 
  676.    POS=I
  677.    TEMP$=Mid$(WD$,POS,1)
  678. End If 
  679. Pen 6
  680. Paper 12
  681. Locate 0,23
  682. Centre Space$(22)
  683. Locate 0,23
  684. Centre "Letter '"+Mid$(COD$,POS,1)+"' becomes '"+TEMP$+"'"
  685. Paper 0
  686. Gosub CLUE_PENALTY
  687. Paper 12
  688. Locate 0,23
  689. Centre Space$(22)
  690. Pen 6
  691. Locate 1,23
  692. Centre "Type in the word"
  693. Paper 0
  694. Return 
  695. UNDERLINE_TEXT:
  696. X_TEXT=(40-TEX_LEN)/2
  697. If ULINE
  698.    Return 
  699. Else 
  700.    X_TEXT=X_TEXT-(GAME=4)*2
  701.    Pen 1
  702.    Locate X_TEXT,Y_TEXT+1 : Print String$("-",TEX_LEN)
  703.    Return 
  704. End If 
  705. CLOCK_PRINT:
  706. If Timer/50=OLDTIME Then Return 
  707. EL_TIME=Timer/50
  708. OLDTIME=EL_TIME
  709. If EL_TIME>59 Then Inc MI : Timer=0 : EL_TIME=0 : OLDT=0
  710. If MI>59 Then Inc HOUR : MI=0 : Timer=0 : OLT=0
  711. If HOUR<10 Then HOUR$="0" Else HOUR$=""
  712. If MI<10 Then MI$="0" Else MI$=""
  713. If EL_TIME<10 Then EL_TIME$="0" Else EL_TIME$=""
  714. HOUR$=HOUR$+Mid$(Str$(HOUR),2)
  715. MI$=MI$+Mid$(Str$(MI),2)
  716. EL_TIME$=EL_TIME$+Mid$(Str$(EL_TIME),2)
  717. GAMETIME$=Left$(HOUR$,2)+":"+Left$(MI$,2)+":"+Left$(EL_TIME$,2)
  718. DISPLAY_TIME:
  719. Pen 5
  720. Paper 0
  721. Locate 24,5
  722. Print GAMETIME$
  723. Pen 15
  724. Return 
  725. CONFIRM_QUIT:
  726. Scroll Off 
  727. Get Cblock 1,0,174,320,26
  728. CLOK=Timer
  729. Pen 15
  730. Paper 6-(BOOK=True)*3
  731. Locate 0,22
  732. Print Space$(41);"Do you really want to escape? (Y or N)";Space$(41)
  733. Ink 15
  734. Box 2,178 To 317,197
  735. Clear Key 
  736. Repeat 
  737.    K$=Lower$(Inkey$)
  738. Until((K$="y") or(K$="n"))
  739. Timer=CLOK
  740. Put Cblock 1,0,174
  741. Screen Swap 
  742. Put Cblock 1,0,174
  743. Del Cblock 1
  744. If K$="n" Then K$="" : Return 
  745. If BOOK=False
  746.    Fade PAWS
  747.    Wait PAWS*16
  748.    Bob Off 
  749.    Wait Vbl 
  750.    Pen 15
  751.    Paper 0
  752.    Clw 
  753.    Pop : Pop 
  754.    WRD=1
  755.    Goto SELECT_GAME
  756. Else 
  757.    DEMO_MESSAGE["Saving Results","The demo version does not keep track","of the progress of each student.  The","full version records results so that","they can be viewed later."]
  758.    Screen Close 1 : CLEAR_BANKS : Run "outro.amos"
  759. End If 
  760. Fade PAWS
  761. Wait PAWS*16
  762. Bob Off 
  763. Wait Vbl 
  764. Pen 15
  765. Paper 0
  766. Clw 
  767. Pop 
  768. WRD=1
  769. Goto GAME_INSTRUCTIONS
  770. CHECK_ANSWER:
  771. If ANSWER$<>WD$ and GAME<>4
  772.    Inc COUNT
  773.    Gosub DULL_THUD
  774. End If 
  775. If WD$=ANSWER$
  776.    If WRD(OPT)<9
  777.       On GAME Gosub GAME1_CORRECT,GAME2_CORRECT,GAME3_CORRECT,GAME4_CORRECT,GAME5_CORRECT
  778.    Else 
  779.       On GAME Gosub GAME1_CORRECT,GAME2_CORRECT,GAME3_CORRECT,GAME4_CORRECT,GAME5_CORRECT
  780.    End If 
  781. End If 
  782. If COUNT>=3
  783.    OLD_TIME=Timer
  784.    COUNT=0
  785.    If WRD(OPT)<9
  786.       On GAME Gosub GAME1_WRONG,GAME2_WRONG,GAME3_WRONG,GAME4_WRONG,GAME5_WRONG
  787.    Else 
  788.       On GAME Gosub GAME1_WRONG,GAME2_WRONG,GAME3_WRONG,GAME4_WRONG,GAME5_WRONG
  789.    End If 
  790. End If 
  791. Y_TEXT=Y_TEXT-(Y_TEXT=19)
  792. Locate X_TEXT,Y_TEXT : Print Space$(10)
  793. Locate X_TEXT,Y_TEXT
  794. Return 
  795. WORD_FLASH:
  796. Pen 15
  797. Paper 0
  798. Locate X_TEXT,Y_TEXT
  799. Print WD$
  800. Pen 6
  801. Paper 12
  802. If GAME=1 Then Locate 1,23 : Centre " Here is the word "
  803. If ADTIME=1
  804.    Gosub CLUE_PENALTY
  805. Else 
  806.    TEMP=Timer
  807.    Clear Key 
  808.    Repeat 
  809.       K$=Lower$(Inkey$) : K=Scancode
  810.    Until(Timer>TEMP+200 or((K$>="a") and(K$<="z")))
  811.    Timer=TEMP
  812. End If 
  813. Pen 15
  814. Paper 0
  815. Locate X_TEXT,Y_TEXT
  816. Print Space$(WRDSZE+2)
  817. Pen 6
  818. Paper 12
  819. If GAME=1 Then Locate 1,23 : Centre " Type in the word "
  820. Pen 15
  821. Paper 0
  822. Locate X_TEXT,Y_TEXT
  823. SHWRD=True
  824. ADTIME=0
  825. Return 
  826. GAME1_WRONG:
  827. If LEVEL=0
  828.    SPEED=130
  829.    X$="-48"
  830.    STP$="120"
  831. Else 
  832.    If LEVEL=1
  833.       SPEED=190
  834.       X$="-64"
  835.       STP$="160"
  836.    Else 
  837.       If LEVEL=2
  838.          SPEED=270
  839.          STP$="240"
  840.          X$="-96"
  841.       End If 
  842.    End If 
  843. End If 
  844. Amal 4,"Anim 1,(44,14)(46,14)(48,14)(50,14)(52,14)(54,14)(56,14)"
  845. Amal On 4
  846. Gosub 2710
  847. Amal 4,"Anim 1,(56,14)(54,14)(52,14)(50,14)(48,14)(46,14)(44,14)(28,1)"
  848. Amal On 4
  849. Gosub 2720
  850. Amal 4,"Anim 0,(29,13)(30,13)(32,13)(34,13)(36,13);Move "+X$+",0,"+STP$
  851. Bob 6,SSX,100,39
  852. Amal 6,"Move "+X$+",0,"+STP$
  853. Amal On 
  854. Repeat 
  855.    Gosub BONG_SOUND
  856. Until X Bob(6)<=58 or Chanmv(6)=0
  857. SSX=X Bob(6)
  858. Amal Off 
  859. Bob 4,X Bob(4),Y Bob(4),28
  860. Wait Vbl 
  861. Bob 4,X Bob(4),Y Bob(4),28
  862. Wait Vbl 
  863. Gosub DISPLAY_CORRECT
  864. If X Bob(6)<=58 Then COUNT=0 : Gosub MORGANA_WIN
  865. Inc ANSWER
  866. Return 
  867. RETRIEVE_WORDS:
  868. For I=0 To 50
  869.    WRD$(I)=""
  870. Next I
  871. If WRDTYP=0
  872.    WORDS=50
  873. Else 
  874.    WORDS=50
  875. End If 
  876. On Error Goto DISK_READ_ERROR_LOWRES
  877. Load "data/"+MNU$(5,WRDTYP)+Str$(WRDSZE)-" "+".abk",15
  878. On Error Goto BBER
  879. WRDBASE=Start(15)-1
  880. T0TWRD=0
  881. Repeat 
  882.    For I=1 To WRDSZE
  883.       WRD$(T0TWRD)=WRD$(T0TWRD)+Chr$(Peek(WRDBASE+I))
  884.    Next I
  885.    Inc T0TWRD
  886.    WRDBASE=WRDBASE+WRDSZE
  887. Until T0TWRD=WORDS
  888. Dec T0TWRD
  889. Erase 15
  890. Return 
  891. JUMBLE_WORDS:
  892. R1=Rnd(T0TWRD)
  893. R2=Rnd(T0TWRD)
  894. A$=WRD$(R1)
  895. WRD$(R1)=WRD$(R2)
  896. WRD$(R2)=A$
  897. Return 
  898. RETRIEVE_MAGIC_WORDS:
  899. For I=0 To 4
  900.    MAGWRD$(I)=""
  901. Next I
  902. On Error Goto DISK_READ_ERROR_LOWRES
  903. Load "data/magic5.abk",15
  904. On Error Goto BBER
  905. WRDBASE=Start(15)-1
  906. MT0TWRD=0
  907. Repeat 
  908.    For I=1 To 5
  909.       MAGWRD$(MT0TWRD)=MAGWRD$(MT0TWRD)+Chr$(Peek(WRDBASE+I))
  910.    Next I
  911.    Inc MT0TWRD
  912.    WRDBASE=WRDBASE+5
  913. Until MT0TWRD=5
  914. Dec MT0TWRD
  915. Erase 15 : On Error Goto BBER
  916. Return 
  917. GAME1_CORRECT:
  918. Bob 6,FSX,148,39
  919. Gosub 2650
  920. Move X 6,"(5,-2,12)"
  921. Amal 2,"Anim 0,(74,13)(77,13)(78,13)(78,13)(74,13)"
  922. Move X 2,"(5,-2,12)"
  923. Move Y 2,"(5,-1,7)(5,1,7)"
  924. Move On 6
  925. Move On 2
  926. Amal On 2
  927. Wait 65
  928. Inc C0RRECT
  929. SHWRD=False
  930. FSX=X Bob(6)
  931. Amal Off 2
  932. Gosub RETRIEVE_NEXT_WORD
  933. COUNT=0
  934. Inc ANSWER
  935. If X Bob(6)=58 and Y Bob(6)=148 Then Gosub ALL_CORRECT
  936. Return 
  937. RETRIEVE_NEXT_WORD:
  938. If WRD(OPT)>=8
  939.    WD$=WRD$(Rnd(T0TWRD))
  940.    Gosub GAME5_JUMBLE
  941.    Gosub ENCRYPT_WORD
  942.    Inc WRD(OPT)
  943.    Goto EXYT_GET_NEXT_WORD
  944. End If 
  945. If(SECTION<>3 and SECTION<>5)
  946.    If WRD(OPT)<8
  947.       Repeat 
  948.          WD$=QUESTION$(OPT,WRD(OPT))
  949.          TEMP$=JUMB$(5,WRD(OPT))
  950.          COD$=CODE$(3,WRD(OPT))
  951.          Inc WRD(OPT)
  952.       Until WD$<>""
  953.    End If 
  954. End If 
  955. If SECTION=3
  956.    If WRD(OPT)<8
  957.       Repeat 
  958.          WD$=QUESTION$(OPT,WRD(OPT))
  959.          COD$=CODE$(OPT,WRD(OPT))
  960.          Inc WRD(OPT)
  961.       Until WD$<>""
  962.    Else 
  963.       WD$=WRD$(Rnd(T0TWRD))
  964.       Gosub ENCRYPT_WORD
  965.       Inc WRD(OPT)
  966.    End If 
  967. End If 
  968. If SECTION=5
  969.    If WRD(OPT)<8
  970.       Repeat 
  971.          WD$=QUESTION$(OPT,WRD(OPT))
  972.          TEMP$=JUMB$(OPT,WRD(OPT))
  973.          Inc WRD(OPT)
  974.       Until WD$<>""
  975.    Else 
  976.       WD$=WRD$(Rnd(T0TWRD))
  977.       Gosub GAME5_JUMBLE
  978.       Inc WRD(OPT)
  979.    End If 
  980. End If 
  981. EXYT_GET_NEXT_WORD:
  982. Return 
  983. DISPLAY_CORRECT:
  984. Gosub WRONG_SOUND
  985. Screen Open 2,320,40,4,Lowres : Screen Display 2,128,211,,
  986. Scroll Off : Curs Off : Flash Off : Hide On 
  987. Palette $D00,$FF0,$FFF,$4F0
  988. Ink 0 : Bar 0,0 To 320,40
  989. Pen 2 : Paper 0
  990. Locate 0,1 : Centre "The correct answer is "+Space$(Len(WD$))
  991. Locate 28-((Len(WD$)-5)/2),1 : Print WD$
  992. Pen 0 : Paper 1
  993. Locate 0,3 : Centre " Press <Space> to continue "
  994. Ink 3 : Box 2,2 To 317,37
  995. Clear Key 
  996. Repeat 
  997. Until Inkey$=" "
  998. Gosub RETRIEVE_NEXT_WORD
  999. Screen Close 2
  1000. SHWRD=False
  1001. Timer=OLD_TIME
  1002. Pen 15
  1003. Paper 0
  1004. Return 
  1005. MORGANA_WIN:
  1006. 1880
  1007. CLOK=Timer
  1008. Paste Bob X Bob(2)-3,Y Bob(2)-4,I Bob(2)
  1009. Bob Off 2
  1010. Limit Bob 0,0 To 320,159
  1011. Pen 5
  1012. Paper 6
  1013. For I=20 To 24
  1014.    Locate 0,I
  1015.    Print Space$(40)
  1016. Next I
  1017. TEMP=Rnd(2)
  1018. If TEMP=0
  1019.    Limit Bob 0,0 To 320,159
  1020.    Locate 0,20
  1021.    Centre "Morgana says, "+Chr$(34)+"I do like children!"
  1022.    Cdown 
  1023.    Centre "Fried or grilled, boiled or baked,"
  1024.    Cdown 
  1025.    Centre "it's all the same to me!"+Chr$(34)
  1026. End If 
  1027. If TEMP=1
  1028.    Limit Bob 0,0 To 320,159
  1029.    Locate 0,20
  1030.    Centre "Morgana says, "+Chr$(34)+"Bubble bubble,"
  1031.    Cdown 
  1032.    Centre "cauldron bubble!, Henrietta is still"
  1033.    Cdown 
  1034.    Centre "in trouble. Only if you break my spell"
  1035.    Cdown 
  1036.    Centre "will Henry live, his tale to tell."+Chr$(34)
  1037. End If 
  1038. If TEMP=2
  1039.    Limit Bob 0,0 To 320,159
  1040.    Locate 0,20
  1041.    Centre "Morgana says, "+Chr$(34)+"Fee, fi, fo, fum, just"
  1042.    Cdown 
  1043.    Centre "look at Henrietta's little chum!"
  1044.    Cdown 
  1045.    Centre "He's still a frog, fat as can be. Try"
  1046.    Cdown 
  1047.    Centre "harder next time - you won't beat me!"+Chr$(34)
  1048. End If 
  1049. Pen 6
  1050. Paper 5
  1051. Locate 0,24
  1052. Centre " Press <Space> to continue "
  1053. Limit Bob 0,0 To 320,159
  1054. Amal 3,"Anim 0,(57,14)(59,14)(66,14)(67,14)(59,14)(67,14)"
  1055. Amal On 3
  1056. Wait 20
  1057. Amal 4,"Anim 0,(44,14)(46,14)(48,14)(50,14)(52,14)(54,14)(56,14)(56,14)(54,14)(52,14)(50,14)(48,14)(46,14)"
  1058. Amal On 4
  1059. Clear Key 
  1060. If SOUND=1
  1061.    LOONY_TUNE[3]
  1062. Else 
  1063.    Repeat 
  1064.    Until Inkey$=" "
  1065. End If 
  1066. Bob Off 
  1067. Fade PAWS
  1068. Wait PAWS*16
  1069. Pen 15
  1070. Paper 0
  1071. Clw 
  1072. FINISH=True
  1073. WRD=1
  1074. Limit Bob 
  1075. Return 
  1076. ALL_CORRECT:
  1077. CLOK=Timer
  1078. If(GAME=3 and SECT=0) or SECT=3
  1079.    Wait 50
  1080.    Bob 1,X Bob(1)-23,Y Bob(1)+6,10
  1081.    Bob 2,182,93,74
  1082. Else 
  1083.    If(GAME=5 and SECT=0) or SECT=5
  1084.       Bob 2,94,107,74
  1085.    End If 
  1086. End If 
  1087. X1=X Bob(4)-11 : Y1=Y Bob(4)-11 : I1=I Bob(4)
  1088. Paste Bob X1,Y1,I1
  1089. Bob Off 4
  1090. Pen 5
  1091. Paper 6
  1092. For I=20 To 24
  1093.    Locate 0,I : Print Space$(40)
  1094. Next I
  1095. TEMP=Rnd(3)
  1096. Locate 1,20
  1097. If TEMP=0
  1098.    Print "Well done, ";NAME$;"!"
  1099. Else 
  1100.    If TEMP=1
  1101.       Print "That's great, ";NAME$;"!"
  1102.    Else 
  1103.       If TEMP=2
  1104.          Print "Congratulations, ";NAME$;"!"
  1105.       Else 
  1106.          Print "Hooray, ";NAME$;"!"
  1107.       End If 
  1108.    End If 
  1109. End If 
  1110. TEMP=Rnd(3)
  1111. If TEMP=0
  1112.    Locate 1,21
  1113.    Print "You have found the letter ";Chr$(34);Mid$(MAGICW$,OPT,1);Chr$(34);"."
  1114.    Locate 1,22
  1115.    Print "Keep up the good work."
  1116. End If 
  1117. If TEMP=1
  1118.    Locate 1,21
  1119.    Print "Cedric and Morgana have lost this"
  1120.    Locate 1,22
  1121.    Print "time.  You have found the letter ";Chr$(34);Mid$(MAGICW$,OPT,1);Chr$(34);"."
  1122. End If 
  1123. If TEMP=2
  1124.    Locate 1,21
  1125.    Print "You have beaten Morgana and found"
  1126.    Locate 1,22
  1127.    Print "the letter ";Chr$(34);Mid$(MAGICW$,OPT,1);Chr$(34);"."
  1128. End If 
  1129. If TEMP=3
  1130.    Locate 1,21
  1131.    Print "Henrietta is dancing for joy."
  1132.    Locate 1,22
  1133.    Print "You have found the letter ";Chr$(34);Mid$(MAGICW$,OPT,1);Chr$(34);"."
  1134. End If 
  1135. Pen 6
  1136. Paper 5
  1137. Locate 0,24 : Centre " Press <Space> to continue "
  1138. If GAME=1 or SECT=1
  1139.    Locate 8,15
  1140. Else 
  1141.    If GAME=2 or SECT=2
  1142.       Locate 32,14
  1143.    Else 
  1144.       If(GAME=3 or SECT=3) or(GAME=4 or SECT=4)
  1145.          Locate 19,9
  1146.       Else 
  1147.          If GAME=5 or SECT=5
  1148.             Locate 9,12
  1149.          End If 
  1150.       End If 
  1151.    End If 
  1152. End If 
  1153. Amal 1,"Anim 0,(69,11)(71,11)(13,11)(71,11)(13,11)"
  1154. Amal 6,"Anim 1,(39,5)(40,5)(41,5)"
  1155. Amal 2,"Anim 0,(74,13)(77,13)(78,13)(78,13)(74,13)l"
  1156. Amal On 
  1157. Wait 65
  1158. Pen 15
  1159. Paper 0
  1160. Print Mid$(MAGICW$,OPT,1)
  1161. Mid$(MAGICL$,OPT,1)=Mid$(MAGICW$,OPT,1)
  1162. Clear Key 
  1163. If SOUND=1
  1164.    LOONY_TUNE[2]
  1165. Else 
  1166.    Repeat 
  1167.    Until Inkey$=" "
  1168. End If 
  1169. COMPLETED(OPT)=1
  1170. Bob Off 
  1171. Wait Vbl 
  1172. Fade PAWS
  1173. Wait PAWS*16
  1174. Pen 15
  1175. Paper 0
  1176. Clw 
  1177. FINISH=True
  1178. Return 
  1179. GAME2_INPUT:
  1180. Pen 6
  1181. Paper 12
  1182. Locate 1,23
  1183. Centre "Now complete the word"
  1184. 2120
  1185. For I=0 To 20
  1186.    X(I)=0
  1187. Next I
  1188. ANSWER$=""
  1189. For I=1 To Len(WD$)
  1190.    ANSWER$=ANSWER$+Mid$(WD$,I,1)
  1191. Next I
  1192. For XSET=1 To Len(ANSWER$)+1
  1193.    L$=Mid$(ANSWER$,XSET,1)
  1194.    If(L$="a") or(L$="e") or(L$="i") or(L$="o") or(L$="u") Then Mid$(ANSWER$,XSET,1)=" " : X(XSET)=XSET
  1195. Next XSET
  1196. XSET=0
  1197. 2150
  1198. Pen 15
  1199. Paper 0
  1200. Locate X_TEXT,Y_TEXT
  1201. Print ANSWER$
  1202. Repeat 
  1203.    Inc XSET
  1204. Until XSET=20 or X(XSET)>0
  1205. If XSET<20 Then Locate X_TEXT+X(XSET)-1,Y_TEXT : Print "_"
  1206. 2160
  1207. Clear Key 
  1208. Repeat 
  1209.    Repeat 
  1210.       Gosub CLOCK_PRINT
  1211.       K$=Lower$(Inkey$) : K=Scancode
  1212.    Until K$<>"" or K<>0
  1213.    If(K=$50)
  1214.       Inc AOCLUES
  1215.       DDTIME=1
  1216.       Gosub 2220
  1217.    Else 
  1218.       If K$=Chr$(27)
  1219.          Gosub CONFIRM_QUIT
  1220.       Else 
  1221.          If(K$=Chr$(8) and XSET>1)
  1222.             Goto 2120
  1223.          Else 
  1224.             If XSET<20 and((K$="a") or(K$="e") or(K$="i") or(K$="o") or(K$="u"))
  1225.                Mid$(ANSWER$,X(XSET),1)=K$
  1226.                Goto 2150
  1227.             End If 
  1228.          End If 
  1229.       End If 
  1230.    End If 
  1231.    If XSET<20
  1232.       Pen 15
  1233.       Paper 0
  1234.       Locate X_TEXT+X(XSET)-1,Y_TEXT
  1235.       Print "_"
  1236.    End If 
  1237. Until K$=Chr$(13)
  1238. If XSET<20 Then Gosub DULL_THUD : Goto 2160
  1239. 2190
  1240. 2200
  1241. Amal Off 
  1242. Put Bob 15
  1243. Put Bob 14
  1244. Bob Off 15
  1245. Bob Off 14
  1246. Wait Vbl 
  1247. Gosub DISPLAY_TIME
  1248. Return 
  1249. 2220
  1250. 2230
  1251. 2240
  1252. GAME2_HELP:
  1253. X=Instr(ANSWER$," ",1)
  1254. If X>0
  1255.    TEMP$=Mid$(WD$,X,1)
  1256. Else 
  1257.    TEMP$=Mid$(WD$,Rnd(Len(ANSWER$)-1)+1,1)
  1258. End If 
  1259. Pen 6
  1260. Paper 12
  1261. Locate 0,23
  1262. Centre Space$(22)
  1263. Centre "'"+TEMP$+"' is in the word"
  1264. Paper 0
  1265. Gosub CLUE_PENALTY
  1266. Paper 12
  1267. Locate 1,23 : Centre Space$(20)
  1268. Pen 6
  1269. Locate 1,23 : Centre "Now complete the word"
  1270. Paper 0
  1271. Return 
  1272. GAME2_CORRECT:
  1273. Amal 2,"Anim 0,(74,13)(77,13)(78,13)(78,13)"
  1274. Amal On 2
  1275. Gosub 2650
  1276. Amal Off 2
  1277. Bob 2,X Bob(2),Y Bob(2),74
  1278. Move X 1,"(5,2,13)"
  1279. Move X 10,"(5,2,13)"
  1280. Amal 1,"Anim 0,(4,16)(5,16)"
  1281. Bob 1,X Bob(1)+4,Y Bob(1),4
  1282. Amal On 1
  1283. Move On 
  1284. Ink 0
  1285. Repeat 
  1286.    XT=X Bob(1)
  1287.    Draw XT-4,140 To XT+4,140
  1288.    Draw XT-4,139 To XT+4,139
  1289.    Draw XT-4,138 To XT+4,138
  1290.    Gosub RANDOM_SOUND
  1291. Until(X Bob(1)>=243 or Movon(1)=0)
  1292. Amal Off 1
  1293. Move Off 
  1294. Bob 1,X Bob(1)-4,Y Bob(1),10
  1295. If X Bob(1)>=239 Then Gosub ALL_CORRECT
  1296. COUNT=0
  1297. Gosub RETRIEVE_NEXT_WORD
  1298. Return 
  1299. GAME2_WRONG:
  1300. SPEED$=","+Str$(26+(13*LEVEL))-" "+")"
  1301. Amal 4,"Anim 1,(44,14)(46,14)(48,14)(50,14)(52,14)(54,14)(56,14)"
  1302. Amal On 4
  1303. Gosub 2710
  1304. Amal 4,"Anim 1,(56,14)(54,14)(52,14)(50,14)(48,14)(46,14)(44,14)(28,14)"
  1305. Amal On 4
  1306. Gosub 2720
  1307. Wait 30
  1308. Move X 3,"(5,2"+SPEED$
  1309. Move X 11,"(5,2"+SPEED$
  1310. Amal 3,"Anim 0,(106,16)(107,16)L"
  1311. Bob 3,X Bob(3)+4,Y Bob(3)-1,106
  1312. Amal On 3
  1313. Move On 
  1314. 2340
  1315. Ink 0
  1316. Repeat 
  1317.    XT=X Bob(3)
  1318.    Draw XT-4,97 To XT+4,97
  1319.    Draw XT-4,98 To XT+4,98
  1320.    Draw XT-4,99 To XT+4,99
  1321.    Gosub RANDOM_SOUND
  1322. Until(X Bob(3)>=241 or Movon(3)=0)
  1323. Move Off 
  1324. Amal Off 3
  1325. XT=X Bob(3)
  1326. Bob 3,X Bob(3)-4,Y Bob(3)+1,16
  1327. Wait Vbl 
  1328. Update 
  1329. Gosub DISPLAY_CORRECT
  1330. COUNT=0
  1331. If XT>=241 Then Gosub MORGANA_WIN
  1332. 2350
  1333. For I=1 To 20
  1334.    X(I)=0
  1335. Next I
  1336. Return 
  1337. GAME5_INPUT:
  1338. Pen 14
  1339. Paper 0
  1340. Locate X_TEXT,Y_TEXT-2
  1341. Print TEMP$
  1342. ANSWER$=Left$(WD$,2-LEVEL)
  1343. CLUEXP=(2-LEVEL)+1
  1344. Clear Key 
  1345. 2390
  1346. Pen 15
  1347. Paper 0
  1348. Locate X_TEXT,Y_TEXT
  1349. Print ANSWER$;"_ ";
  1350. Repeat 
  1351.    Gosub CLOCK_PRINT
  1352.    K$=Lower$(Inkey$) : K=Scancode
  1353. Until K$<>"" or K<>0
  1354. If K=$45
  1355.    Gosub CONFIRM_QUIT
  1356. Else 
  1357.    If((K$>="a") and(K$<="z") and Len(ANSWER$)<Len(WD$))
  1358.       ANSWER$=ANSWER$+K$
  1359.    Else 
  1360.       If(K=$41) and(Len(ANSWER$)>2-LEVEL)
  1361.          ANSWER$=Left$(ANSWER$,Len(ANSWER$)-1)
  1362.       Else 
  1363.          If(K=$50)
  1364.             Inc AOCLUES
  1365.             Gosub GAME5_HELP
  1366.          End If 
  1367.       End If 
  1368.    End If 
  1369. End If 
  1370. If K$=Chr$(13)
  1371.    If Len(WD$)=Len(ANSWER$)
  1372.       Goto 2420
  1373.    Else 
  1374.       Gosub DULL_THUD
  1375.       Goto 2160
  1376.    End If 
  1377. End If 
  1378. Goto 2390
  1379. 2420
  1380. Amal Off 14
  1381. Amal Off 15
  1382. Put Bob 15
  1383. Put Bob 14
  1384. Wait Vbl 
  1385. Bob Off 15
  1386. Bob Off 14
  1387. Gosub DISPLAY_TIME
  1388. Return 
  1389. '
  1390. GAME5_HELP:
  1391.    I=CLUEXP
  1392.    If I>Len(WD$)
  1393.       I=Rnd(Len(WD$)-1)+1
  1394.       Goto GAME5_LOOP2
  1395.    Else 
  1396.       Inc CLUEXP
  1397.    End If 
  1398. '
  1399.    LP=Instr(TEMP$,Mid$(WD$,I,1),I)
  1400.    If LP=0 Then Goto GAME5_LOOP1
  1401. '
  1402.    A$=Mid$(TEMP$,LP,1)
  1403.    B$=Mid$(TEMP$,I,1)
  1404.    Mid$(TEMP$,LP,1)=B$
  1405.    Mid$(TEMP$,I,1)=A$
  1406.    If JUMLEV=True Then Return 
  1407.    Locate X_TEXT,Y_TEXT-2
  1408.    Print TEMP$
  1409. '
  1410. GAME5_LOOP1:
  1411.    Pen 6
  1412.    Paper 12
  1413.    Locate 0,23
  1414.    Centre "Position '"+Str$(I)-" "+"' is '"+Mid$(WD$,I,1)+"'"
  1415.    Gosub CLUE_PENALTY
  1416.    Pen 6
  1417.    Paper 12
  1418.    Locate 0,23
  1419.    Centre Space$(22)
  1420.    Locate 0,23
  1421.    Centre "Type in the word"
  1422.    Paper 0
  1423.    Return 
  1424. '
  1425. GAME5_LOOP2:
  1426.    If JUMLEV=True
  1427.       Return 
  1428.    Else 
  1429.       Goto GAME5_LOOP1
  1430.    End If 
  1431. '
  1432. GAME5_JUMBLE:
  1433.    COUNTER=0
  1434. JUMBLE_LOOP:
  1435.    TEMP$=""
  1436. '
  1437.    For I=1 To Len(WD$)
  1438.       TEMP$=TEMP$+Mid$(WD$,I,1)
  1439.    Next I
  1440. '
  1441.    For I=0 To 5*(LEVEL+1)
  1442.       R1=Rnd(Len(WD$)-1)+1
  1443.       R2=Rnd(Len(WD$)-1)+1
  1444.       A$=Mid$(TEMP$,R1,1)
  1445.       Mid$(TEMP$,R1,1)=Mid$(TEMP$,R2,1)
  1446.       Mid$(TEMP$,R2,1)=A$
  1447.    Next I
  1448. '
  1449.    If LEVEL<>2
  1450.       CLUEXP=1
  1451.       For ZZZZ=1 To 2-LEVEL
  1452.          JUMLEV=True
  1453.          Gosub GAME5_HELP
  1454.          JUMLEV=False
  1455.       Next ZZZZ
  1456.    End If 
  1457. '
  1458.    If WD$<>TEMP$ or COUNTER>10
  1459.       Return 
  1460.    Else 
  1461.       Inc COUNTER
  1462.       Goto JUMBLE_LOOP
  1463.    End If 
  1464. '
  1465. JUMBLE_MAGIC_WORD:
  1466.    COUNTER=0
  1467. JUMBLE_WORD_LOOP:
  1468. '
  1469.    For I=0 To 5*(LEVEL+1)
  1470.       R1=Rnd(4)+1
  1471.       R2=Rnd(4)+1
  1472.       A$=Mid$(MAGICW$,R1,1)
  1473.       Mid$(MAGICW$,R1,1)=Mid$(MAGICW$,R2,1)
  1474.       Mid$(MAGICW$,R2,1)=A$
  1475.    Next I
  1476. '
  1477.    If LEVEL<>2
  1478.       CLUEXP=1
  1479.       For ZZZZ=1 To 2-LEVEL
  1480.          JUMLEV=True
  1481.          Gosub GAME5_HELP
  1482.          JUMLEV=False
  1483.       Next ZZZZ
  1484.    End If 
  1485. '
  1486.    If WD$<>MAGICW$ or COUNTER>10
  1487.       Return 
  1488.    Else 
  1489.       Inc COUNTER
  1490.       Goto JUMBLE_WORD_LOOP
  1491.    End If 
  1492. '
  1493. GAME5_CORRECT:
  1494. Bob 2,X Bob(2),Y Bob(2)-2,82
  1495. Amal 2,"Anim 0,(82,13)(83,13)(84,13)(84,13)"
  1496. Amal On 2
  1497. Gosub 2650
  1498. Amal Off 2
  1499. Bob 2,X Bob(2),Y Bob(2)+2,82
  1500. Amal 1,"Anim 0,(4,6)(5,6)"
  1501. Amal 6,"Move -10,0,25"
  1502. Bob 1,X Bob(1)+4,Y Bob(1),4
  1503. Amal On 1
  1504. Amal On 6
  1505. Repeat 
  1506.    Gosub RANDOM_SOUND
  1507. Until X Bob(6)<73 or Chanmv(6)=0
  1508. Amal Off 1
  1509. Bob 1,X Bob(1)-4,Y Bob(1),10
  1510. Gosub RETRIEVE_NEXT_WORD
  1511. If X Bob(6)<73 Then Gosub ALL_CORRECT
  1512. COUNT=0
  1513. Inc ANSWER
  1514. Return 
  1515. 2650
  1516. If SOUND=1
  1517.    For I=1 To 5
  1518.       Volume 3,63
  1519.       Play 3,40,1
  1520.       Volume 3,0
  1521.       Wait 2
  1522.    Next I
  1523.    Wait 10
  1524.    Return 
  1525. Else 
  1526.    Wait 25
  1527.    Return 
  1528. End If 
  1529. GAME5_WRONG:
  1530. Amal 4,"Anim 1,(44,14)(46,14)(48,14)(50,14)(52,14)(54,14)(56,14)"
  1531. Amal On 4
  1532. Gosub 2710
  1533. Amal 4,"Anim 1,(56,14)(54,14)(52,14)(50,14)(48,14)(46,14)(44,14)(28,14)"
  1534. Amal On 4
  1535. Gosub 2720
  1536. Wait 30
  1537. Amal 3,"Anim 0,(17,16)(20,16)"
  1538. Bob 3,X Bob(3)-4,Y Bob(3)-1,17
  1539. Amal On 3
  1540. If LEVEL=0 Then OS=3 Else OS=0
  1541. TEMP=10+(7*LEVEL+OS)
  1542. TEMP1$=Str$(2*TEMP)
  1543. TEMP2$=Str$(5*TEMP)
  1544. Amal 6,"Move "+TEMP1$+",0,"+TEMP2$
  1545. Amal On 6
  1546. Repeat 
  1547.    Gosub RANDOM_SOUND
  1548. Until X Bob(6)>245 or Chanmv(6)=0
  1549. Amal Off 3
  1550. Bob 3,X Bob(3)+4,Y Bob(3)+1,16
  1551. Gosub DISPLAY_CORRECT
  1552. If X Bob(6)>245 Then Bob 4,236,101,28 : Gosub MORGANA_WIN
  1553. COUNT=0
  1554. Return 
  1555. 2710
  1556. If SOUND=1
  1557.    Volume 63
  1558.    For I=1 To 50 Step 5
  1559.       Play I+25,3
  1560.    Next I
  1561.    For I=49 To 1 Step -5
  1562.       Play I+25,3
  1563.    Next I
  1564.    Volume 0
  1565.    Wait 10
  1566.    Return 
  1567. Else 
  1568.    Wait 50
  1569.    Return 
  1570. End If 
  1571. 2720
  1572. If SOUND=1
  1573.    Volume 63
  1574.    For I=1 To 50 Step 5
  1575.       Play I+25,3
  1576.    Next I
  1577.    For I=49 To 1 Step -5
  1578.       Play I+25,3
  1579.    Next I
  1580.    Volume 0
  1581.    Wait 80
  1582.    Return 
  1583. Else 
  1584.    Wait 120
  1585.    Return 
  1586. End If 
  1587. 2730
  1588. If SOUND=1
  1589.    Volume 63
  1590.    For I=1 To 40 Step 5
  1591.       Play I+25,1
  1592.    Next I
  1593.    For I=39 To 1 Step -5
  1594.       Play I+25,1
  1595.    Next I
  1596.    Volume 0
  1597.    Wait 10
  1598.    Return 
  1599. Else 
  1600.    Wait 50
  1601.    Return 
  1602. End If 
  1603. CLUE_PENALTY:
  1604. 2760
  1605. Timer=EL_TIME*50
  1606. OLDT=Timer
  1607. If SOUND=1
  1608.    Volume 63
  1609.    For I=0 To 20
  1610.       Play I+37,3
  1611.    Next I
  1612.    Volume 0
  1613.    Wait 18
  1614. Else 
  1615.    Wait 18
  1616. Timer=OLDT
  1617. End If 
  1618. If CPENALTY<>0
  1619.    Volume 63
  1620.    For I=1 To CPENALTY
  1621.       OLDT=Timer
  1622.       Gosub NOISE_BELL
  1623.       Gosub CLOCK_PRINT
  1624.       ADJ=Timer-OLDT
  1625.       Timer=Timer+50-ADJ
  1626.    Next I
  1627.    Gosub CLOCK_PRINT
  1628.    Volume 0
  1629. End If 
  1630. If SOUND=0
  1631.    OLDT=Timer
  1632.    Timer=0
  1633.    Clear Key 
  1634.    Repeat 
  1635.    Until Timer>50 or(Inkey$<>"")
  1636.    Timer=OLDT
  1637. End If 
  1638. Pen 15
  1639. Paper 0
  1640. If GAME<>4 Then Locate X_TEXT,Y_TEXT : Print Space$(WRDSZE+2)
  1641. If GAME=2 Then Locate X_TEXT,Y_TEXT : Print ANSWER$
  1642. Timer=EL_TIME*50
  1643. Return 
  1644. ENCRYPT_WORD:
  1645. If LEVEL=0
  1646.    RC=Rnd(1)+1
  1647. Else 
  1648.    If LEVEL=1
  1649.       RC=Rnd(1)+1+(Rnd(1)=1)*3
  1650.    Else 
  1651.       RC=Rnd(3)+1+(Rnd(3)=1 or Rnd(3)=3)*5
  1652.    End If 
  1653. End If 
  1654. COD$=""
  1655. For I=1 To WRDSZE
  1656.    EC=Asc(Mid$(WD$,I,1))-RC
  1657.    EC=EC-(EC<97)*26
  1658.    EC=EC+(EC>122)*26
  1659.    COD$=COD$+Chr$(EC)
  1660. Next I
  1661. Return 
  1662. KEY_PRINT:
  1663. Gosub GAME3_CLUE
  1664. ULINE=True
  1665. Y_TEXT=19
  1666. TEX_LEN=Len(WD$)
  1667. Gosub UNDERLINE_TEXT
  1668. Locate X_TEXT,Y_TEXT
  1669. Print COD$
  1670. ULINE=False
  1671. Return 
  1672. GAME3_WRONG:
  1673. Amal 4,"Anim 1,(44,14)(46,14)(48,14)(50,14)(52,14)(54,14)(56,14)"
  1674. Amal On 4
  1675. Gosub 2710
  1676. Amal 4,"Anim 1,(56,14)(54,14)(52,14)(50,14)(48,14)(46,14)(44,14)(28,14)"
  1677. Amal On 4
  1678. Gosub 2720
  1679. Wait 30
  1680. Amal Off 
  1681. For TEMP=1 To 2+LEVEL
  1682.    If X Bob(3)=205 or X Bob(3)=180
  1683.       Move X 3,"(5,-5,2)"
  1684.    Else 
  1685.       Move X 3,"(3,-5,3)"
  1686.    End If 
  1687.    If Y Bob(3)=107 or Y Bob(3)=96
  1688.       Move Y 3,"(1,-1,6)"
  1689.    Else 
  1690.       Move Y 3,"(1,-1,5)"
  1691.    End If 
  1692.    Anim 3,"(17,15)(20,15)(23,15)(25,15)(17,15)"
  1693.    Move On 
  1694.    Anim On 
  1695.    Gosub 2730
  1696.    Move Off 
  1697.    Anim Off 
  1698.    Bob 3,X Bob(3),Y Bob(3),17
  1699.    If X Bob(3)<=171
  1700.       Bob 4,198,88,28
  1701.       Wait Vbl 
  1702.       Update 
  1703.       Gosub DISPLAY_CORRECT
  1704.       Gosub MORGANA_WIN
  1705.       Gosub RETRIEVE_NEXT_WORD
  1706.       Gosub ENCRYPT_WORD
  1707.       Gosub KEY_PRINT
  1708.       COUNT=0
  1709.       Return 
  1710.    Else 
  1711.    Next TEMP
  1712. End If 
  1713. Gosub DISPLAY_CORRECT
  1714. Gosub ENCRYPT_WORD
  1715. Gosub KEY_PRINT
  1716. Return 
  1717. GAME3_CORRECT:
  1718. If X Bob(1)=87 and Y Bob(1)=96 Then SPEED$="7" Else SPEED$="6"
  1719. Bob 2,X Bob(2),Y Bob(2)-2,82
  1720. Amal 2,"Anim 0,(82,13)(83,13)(84,13)(84,13)"
  1721. Amal On 2
  1722. Gosub 2650
  1723. Amal Off 
  1724. Bob 2,X Bob(2),Y Bob(2)+2,82
  1725. Move X 1,"(5,7,2)"
  1726. Move Y 1,"(1,-1,"+SPEED$+")"
  1727. Anim 1,"(1,10)(4,10)(5,10)l"
  1728. Move On 
  1729. Anim On 
  1730. Gosub 2730
  1731. Move Off 
  1732. Anim Off 
  1733. If Y Bob(1)>90 or Y Bob(1)<>84
  1734.    Bob 1,X Bob(1),Y Bob(1)+1,1
  1735. Else 
  1736.    Bob 1,X Bob(1),Y Bob(1),1
  1737. End If 
  1738. If X Bob(1)>=157 Then Bob 3,280,117,17 : Gosub ALL_CORRECT
  1739. COUNT=0
  1740. Gosub RETRIEVE_NEXT_WORD
  1741. Gosub ENCRYPT_WORD
  1742. Gosub KEY_PRINT
  1743. Return 
  1744. GAME3_CLUE:
  1745. CL$=MAGWRD$(Rnd(4))
  1746. C$=""
  1747. CLUE$=""
  1748. For A=1 To 5
  1749.    EC=Asc(Mid$(CL$,A,1))-RC
  1750.    If EC<97 Then EC=EC+26
  1751.    If EC>122 Then EC=EC-26
  1752.    CLUE$=CLUE$+Chr$(EC)
  1753. Next A
  1754. ULINE=True
  1755. Y_TEXT=19
  1756. TEX_LEN=Len(CL$)
  1757. Gosub UNDERLINE_TEXT
  1758. Paper 6
  1759. Locate 30,8
  1760. Print "Clue:"
  1761. Paper 5
  1762. Pen 0
  1763. Locate 30,9
  1764. Print CLUE$
  1765. Locate 30,10
  1766. Print CL$
  1767. Paper 0
  1768. Pen 15
  1769. ULINE=False
  1770. Return 
  1771. GAME4_INPUT:
  1772. LTRY$=""
  1773. ESC=False
  1774. BROCK=False
  1775. ANSWER$=Space$(TEX_LEN)
  1776. NUM=0
  1777. FOUND$=""
  1778. Ink 0
  1779. Bar 112,117 To 150,170
  1780. If LEVEL<>2
  1781.    For L=1 To 2-LEVEL
  1782.       K$=Mid$(WD$,L,1)
  1783.       For I=1 To Len(WD$)
  1784.          If(Mid$(WD$,I,1)=K$) and(Mid$(ANSWER$,I,1)<>K$)
  1785.             Mid$(ANSWER$,I,1)=K$
  1786.             If Instr(LTRY$,K$)=0
  1787.                LTRY$=LTRY$+K$
  1788.             End If 
  1789.          End If 
  1790.       Next I
  1791.    Next L
  1792. End If 
  1793. Locate 20,15
  1794. Print Space$(10)
  1795. Locate 20,17
  1796. Print Space$(10)
  1797. Gosub 3410
  1798. Ink 0
  1799. Bar 112,117 To 150,170
  1800. Pen 15
  1801. Locate X_TEXT,Y_TEXT
  1802. Print ANSWER$
  1803. 3230
  1804. Clear Key 
  1805. Repeat 
  1806.    3240
  1807.    K$=Lower$(Inkey$)
  1808.    K=Scancode
  1809.    L=Len(ANSWER$)
  1810.    If(K=$50) Then Inc AOCLUES : ADTIME=1 : Gosub GAME4_HELP : Goto 3230
  1811.    If K$="" Then Gosub CLOCK_PRINT : Goto 3240
  1812.    If K=$45 Then Gosub CONFIRM_QUIT : Goto 3230
  1813.    If(K$>"z") or(K$<"a") or(K$=Chr$(13)) or(K$="") Then Gosub DULL_THUD : Goto 3230
  1814.    If((K$>="a") and(K$<="z"))
  1815.       If(Instr(FOUND$,K$)=0 and Instr(LTRY$,K$)=0)
  1816.          LTRY$=LTRY$+K$
  1817.       End If 
  1818.    End If 
  1819.    Gosub LETTER_GET
  1820.    Pen 15
  1821.    Locate X_TEXT,Y_TEXT
  1822.    Print ANSWER$
  1823. Until(ANSWER$=WD$ or NUM=10)
  1824. Wait Vbl 
  1825. Return 
  1826. LETTER_GET:
  1827. FOUND=0
  1828. For TE=1 To Len(WD$)
  1829.    If Mid$(WD$,TE,1)=K$
  1830.       FOUND=1
  1831.       If Mid$(ANSWER$,TE,1)<>K$
  1832.          Mid$(ANSWER$,TE,1)=K$
  1833.          Gosub NOISE_BELL
  1834.       End If 
  1835.    End If 
  1836. Next TE
  1837. If FOUND=0 and Instr(FOUND$,K$)=0
  1838.    Inc NUM
  1839.    FOUND$=FOUND$+K$
  1840.    Gosub 3410
  1841.    Gosub DULL_THUD
  1842.    Gosub LETTER_WRONG
  1843. End If 
  1844. Return 
  1845. 3410
  1846. Pen 1
  1847. If NUM<=5 Then Locate 18+(NUM*2),15 Else Locate 8+(NUM*2),17
  1848. Print Mid$(FOUND$,NUM,1)
  1849. Return 
  1850. LETTER_WRONG:
  1851. Ink 15
  1852. Set Paint 1
  1853. If NUM=1 Then Circle 126,125,8
  1854. If NUM=2
  1855.    Draw 126,132 To 126,146
  1856. Else 
  1857.    If NUM=3
  1858.       Draw 126,146 To 120,160
  1859.    Else 
  1860.       If NUM=4
  1861.          Draw 126,146 To 132,160
  1862.       Else 
  1863.          If NUM=5
  1864.             Draw 126,138 To 116,135
  1865.          Else 
  1866.             If NUM=6
  1867.                Draw 126,138 To 136,135
  1868.             Else 
  1869.                If NUM=7
  1870.                   Circle 123,123,2
  1871.                Else 
  1872.                   If NUM=8
  1873.                      Circle 129,123,2
  1874.                   Else 
  1875.                      If NUM=9
  1876.                         Draw 126,124 To 126,126
  1877.                      Else 
  1878.                         If NUM=10
  1879.                            Draw 123,128 To 129,128
  1880.                         End If 
  1881.                      End If 
  1882.                   End If 
  1883.                End If 
  1884.             End If 
  1885.          End If 
  1886.       End If 
  1887.    End If 
  1888. End If 
  1889. OLD_TIME=Timer
  1890. Set Paint 1
  1891. Bob Off 13
  1892. If NUM=10
  1893.    If WRD(OPT)<9
  1894.       Gosub GAME4_WRONG
  1895.    Else 
  1896.       Gosub GAME4_WRONG
  1897.    End If 
  1898. End If 
  1899. Return 
  1900. GAME4_WRONG:
  1901. Amal 4,"Anim 1,(44,14)(46,14)(48,14)(50,14)(52,14)(54,14)(56,14)"
  1902. Amal On 4
  1903. Gosub 2710
  1904. Amal 4,"Anim 1,(56,14)(54,14)(52,14)(50,14)(48,14)(46,14)(44,14)(28,14)"
  1905. Amal On 4
  1906. Gosub 2720
  1907. Wait 30
  1908. For TEMP=1 To 2+LEVEL
  1909.    If ALLDONE=0 Then SPEED$=",15)" Else SPEED$=",10)"
  1910.    If ALLDONE=7
  1911.       Pop 
  1912.       Gosub DISPLAY_CORRECT
  1913.       Bob 3,140,74,57
  1914.       Bob 4,180,75,28
  1915.       Paste Bob X Bob(1)-10,Y Bob(1)-5,I Bob(1)
  1916.       Bob Off 1
  1917.       Gosub MORGANA_WIN
  1918.       Return 
  1919.    End If 
  1920.    If ST2=1
  1921.       Move X 3,"(5,9,3)"
  1922.       Move Y 3,"(1,-1"+SPEED$
  1923.       ST2=0
  1924.    Else 
  1925.       If ST2=0
  1926.          Move X 3,"(5,-9,3)"
  1927.          Move Y 3,"(1,-1"+SPEED$
  1928.          ST2=1
  1929.       End If 
  1930.    End If 
  1931.    Move On 
  1932.    Amal On 
  1933.    Gosub 2730
  1934.    Move Off 
  1935.    Amal Off 
  1936.    Inc ALLDONE
  1937. Next TEMP
  1938. Gosub DISPLAY_CORRECT
  1939. Return 
  1940. GAME4_CORRECT:
  1941. Bob 2,X Bob(2),Y Bob(2)-2,74
  1942. Amal 2,"Anim 0,(74,13)(77,13)(78,13)(78,13)"
  1943. Amal On 2
  1944. Gosub 2650
  1945. Amal Off 2
  1946. Bob 2,X Bob(2),Y Bob(2)+2,74
  1947. If ALLDONE1=0 Then SPEED$=",15)" Else SPEED$=",10)"
  1948. If ALLDONE1=7
  1949.    Pop 
  1950.    Bob 2,X Bob(1)+130,Y Bob(1)+11,74
  1951.    Bob 1,X Bob(1)+90,Y Bob(1)-4,10
  1952.    Paste Bob X Bob(3)-8,Y Bob(3)-9,I Bob(3)
  1953.    Bob Off 3
  1954.    Gosub ALL_CORRECT
  1955.    Goto 3620
  1956. End If 
  1957. If ST=1
  1958.    Move X 1,"(5,9,3)"
  1959.    Move Y 1,"(1,-1"+SPEED$
  1960.    Move On 
  1961.    Gosub 2730
  1962.    Move Off 
  1963.    Amal Off 
  1964.    ST=0
  1965. Else 
  1966.    If ST=0
  1967.       Move X 1,"(5,-9,3)"
  1968.       Move Y 1,"(1,-1"+SPEED$
  1969.       Move On 
  1970.       Amal On 
  1971.       Gosub 2730
  1972.       Move Off 
  1973.       Amal Off 
  1974.       ST=1
  1975.    End If 
  1976. End If 
  1977. 3620
  1978. Gosub RETRIEVE_NEXT_WORD
  1979. Inc ALLDONE1
  1980. Return 
  1981. GAME4_HELP:
  1982. X=Instr(ANSWER$," ",1)
  1983. If X>0
  1984.    TEMP$=Mid$(WD$,X,1)
  1985. Else 
  1986.    TEMP$=Mid$(WD$,Rnd(Len(ANSWER$)-1)+1,1)
  1987. End If 
  1988. Pen 6
  1989. Paper 12
  1990. Locate 1,23
  1991. Centre "'"+TEMP$+"' is in the word"
  1992. Paper 0
  1993. Gosub CLUE_PENALTY
  1994. Paper 12
  1995. Locate 1,23
  1996. Centre Space$(22)
  1997. Pen 6
  1998. Locate 1,23
  1999. Centre "Choose a letter"
  2000. Paper 0
  2001. Return 
  2002. RETRIEVE_DEFAULTS:
  2003. SOUND=1
  2004. LEVEL=1
  2005. CPENALTY=20
  2006. SECTION=0
  2007. VAR4=1
  2008. VAR5=0
  2009. CONCEAL=0
  2010. WRDTYP=0
  2011. DATE$=""
  2012. On Error Goto BBER
  2013. Return 
  2014. RETRIEVE_HIGH_SCORES:
  2015. On Error Goto STORE_DEFAULT_HIGH_SCORES
  2016. Open In 1,"DATA/SCORES.DAT"
  2017. For N=0 To 9
  2018.    Input #1,HTIME$(N)
  2019.    Input #1,HNAME$(N)
  2020. Next N
  2021. Close 1
  2022. On Error Goto BBER
  2023. Return 
  2024. STORE_DEFAULT_HIGH_SCORES:
  2025. Close 
  2026. For N=0 To 9
  2027.   HTIME$(N)="99:99:99"
  2028.   HNAME$(N)=".............."
  2029. Next N
  2030. Resume STORE_HIGH_SCORES
  2031. STORE_HIGH_SCORES:
  2032. On Error Goto DISK_WRITE_ERROR
  2033. Open Out 1,"DATA/SCORES.DAT"
  2034. For N=0 To 9
  2035.   Print #1,HTIME$(N)
  2036.   Print #1,HNAME$(N)
  2037. Next N
  2038. Close 1
  2039. On Error Goto BBER
  2040. Return 
  2041. STORE_RESULTS:
  2042. On Error Goto BBER
  2043. Return 
  2044. DISK_ERROR_DEFAULTS:
  2045. Close 
  2046. Pen 0
  2047. Hide On 
  2048. Boom 
  2049. Get Cblock 3,0,80,320,48
  2050. Ink 15+(MDE=1)*12
  2051. DIVX=2-MDE
  2052. Bar 32*(3-DIVX),83 To 288*(3-DIVX),125
  2053. Paper 15+(MDE=1)*12
  2054. Locate 0,11 : Centre "Disc read error!"
  2055. Locate 0,13 : Centre " "
  2056. Cdown : Centre "Press any key."
  2057. Update 
  2058. Clear Key 
  2059. Repeat 
  2060. Until(Inkey$<>"") or Mouse Key<>0
  2061. Bell 
  2062. Put Cblock 3
  2063. Wait Vbl : Update : Put Cblock 3
  2064. Del Cblock 3
  2065. Paper 0
  2066. Return 
  2067. DISK_READ_ERROR_LOWRES:
  2068. Close 
  2069. Hide On 
  2070. Boom 
  2071. Get Cblock 3,0,80,320,48
  2072. Ink 15
  2073. Bar 32,83 To 288,125
  2074. Pen 0
  2075. Paper 15
  2076. Locate 0,11 : Centre "Insert BOOK of SPELLS disc"
  2077. Locate 0,12 : Centre "into the current drive"
  2078. Locate 0,14 : Centre "Press any key to retry"
  2079. Clear Key 
  2080. Repeat 
  2081. Until(Inkey$<>"") or Mouse Key<>0
  2082. Bell 
  2083. Put Cblock 3
  2084. Update 
  2085. Put Cblock 3
  2086. Update 
  2087. F$=Dir First$("*.*")
  2088. Resume 
  2089. DISK_READ_ERROR_HIRES:
  2090. Hide On 
  2091. Boom 
  2092. Get Cblock 3,32,80,608-32,125-80
  2093. Ink 3
  2094. Bar 32,83 To 608,125
  2095. Pen 0
  2096. Paper 3
  2097. Locate 0,11 : Centre "Insert BOOK of SPELLS disc"
  2098. Locate 0,12 : Centre "into the current drive"
  2099. Locate 0,14 : Centre "Press any key to retry"
  2100. Clear Key 
  2101. Repeat 
  2102. Until Inkey$<>"" or Mouse Key<>0
  2103. Bell 
  2104. Put Cblock 3
  2105. Del Cblock 3
  2106. F$=Dir First$("*.*")
  2107. Resume 
  2108. DISK_WRITE_ERROR:
  2109. Close 
  2110. Pen 0
  2111. DISK_WRITE_ERROR_B:
  2112. Hide On 
  2113. Boom 
  2114. Get Cblock 3,0,10*8,320,48
  2115. Ink 15+(MDE=1)*12
  2116. Bar 32,83 To 288,125
  2117. Paper 15+(MDE=1)*12
  2118. Locate 0,11 : Centre "Disk write error!"
  2119. Locate 0,13 : Centre " "
  2120. Cdown : Centre "Press any key."
  2121. Clear Key 
  2122. Repeat 
  2123. Until(Inkey$<>"" or Mouse Key<>0)
  2124. Bell 
  2125. Put Cblock 3
  2126. Update 
  2127. Put Cblock 3
  2128. Update 
  2129. Del Cblock 3
  2130. Paper 0
  2131. Resume 3990
  2132. 3990
  2133. Return 
  2134. DISPLAY_HIGH_SCORES:
  2135. Fade PAWS
  2136. Wait PAWS*16
  2137. Paper 0
  2138. Clw 
  2139. Scroll Off 
  2140. Wind Open 2,0,0,40,4
  2141. Curs Off 
  2142. Scroll Off 
  2143. Set Font FONT_NUMBER
  2144. Ink 5,0
  2145. Text 80,48,"Henry's Top Ten"
  2146. Ink 6,0
  2147. Text 224,48,"- 2"
  2148. Window 0 : Ink 5
  2149. Scroll Off 
  2150. Bar 115,32 To 204,34
  2151. Paste Bob 130,0,108
  2152. Paste Bob 163,0,109
  2153. Ink 9
  2154. Box 32,72 To 280,184
  2155. Box 33,73 To 279,183
  2156. For I=0 To 9
  2157.    Pen 9-(HIPOS>-1 and HIPOS=I)*5
  2158.    Locate 6,11+I
  2159.    If HTIME$(I)<>"99:99:99"
  2160.       Print HTIME$(I);
  2161.    Else 
  2162.       Print "........";
  2163.    End If 
  2164.    Print "......";HNAME$(I)
  2165. Next I
  2166. Pen 5
  2167. Paper 6
  2168. Locate 0,24
  2169. Centre "        Press <Space> to continue       "
  2170. Flash 14,"(CC0,25)(0C0,25)"
  2171. Fade PAWS,$8,$FF,$6F,$642,$862,$FF0,$C00,$FAA,$4F0,$80,$222,$444,$666,$AAA,$CCC,$CC0
  2172. Clear Key 
  2173. HIGH_SCORE_LOOP:
  2174. If HIPOS<>-1 and SOUND=1
  2175.    LOONY_TUNE[4]
  2176.    K$=Param$
  2177. Else 
  2178.    Repeat 
  2179.       K$=Inkey$
  2180.    Until(HIPOS<>-1) or(K$=" ")
  2181. End If 
  2182. If K$=" " Then Goto EXYT_HIGH_SCORE
  2183. If SOUND=1
  2184.    Wait 10
  2185.    LOONY_TUNE[4]
  2186.    Wait 50
  2187. End If 
  2188. If Param$<>" " Then Goto HIGH_SCORE_LOOP
  2189. EXYT_HIGH_SCORE:
  2190. Flash Off 
  2191. Fade PAWS
  2192. Wait PAWS*16
  2193. Window 2
  2194. Wind Close 
  2195. Paper 0
  2196. Clw 
  2197. If GAME_END=False
  2198.    Goto BACK_TO_BOOK
  2199. Else 
  2200.    GAME_END=False
  2201.    DEMO_MESSAGE["Saving Results","The demo version does not keep a track","of the progress of each student.  The","full version records results so that","they can be viewed later."]
  2202.    Screen Close 1 : CLEAR_BANKS : Run "outro.amos"
  2203. End If 
  2204. Goto GAME_INSTRUCTIONS
  2205. BACK_TO_BOOK:
  2206. Paper 0
  2207. Clw 
  2208. GAME_END=False
  2209. Goto SELECT_GAME
  2210. INSERT_SCORE:
  2211. HIPOS=-1
  2212. For I=0 To 9
  2213.    If GAMETIME$>HTIME$(I)
  2214.    Next I
  2215. Else 
  2216.    For Y=8 To I Step -1
  2217.       HTIME$(Y+1)=HTIME$(Y)
  2218.       HNAME$(Y+1)=HNAME$(Y)
  2219.    Next Y
  2220.    HTIME$(I)=GAMETIME$
  2221.    HNAME$(I)=NAME$
  2222.    HIPOS=I
  2223. End If 
  2224. Return 
  2225. TRANSFORM_HENRY:
  2226. Fade PAWS
  2227. Wait PAWS*16
  2228. Screen 1
  2229. Paper 0
  2230. Clw 
  2231. Wind Open 2,0,0,40,12
  2232. Curs Off 
  2233. Scroll Off 
  2234. Ink 2
  2235. Box 0,0 To 319,199
  2236. Box 1,1 To 318,198
  2237. Set Font FONT_NUMBER
  2238. Ink 1,0
  2239. Text 56,16,"Well done, "+NAME$+"!"
  2240. Text 56,32,"You have found the five"
  2241. Text 56,48,"magic letters.  To restore"
  2242. Text 56,64,"Henry to his former, good-"
  2243. Text 56,5*16,"looking self, arrange them"
  2244. Text 56,6*16,"to make the name of"
  2245. Text 56,7*16,"something found in"
  2246. Text 56,8*16,"Morgana's garden."
  2247. Ink 3,0
  2248. W=Text Length("Press <Space> to continue")
  2249. Text 160-W/2,11*16,"Press <Space> to continue"
  2250. Fade PAWS,$8,$CC0,$C0,$C00
  2251. Wait PAWS*16
  2252. Clear Key 
  2253. Repeat : Until Inkey$=" "
  2254. Fade PAWS
  2255. Wait PAWS*16
  2256. Wind Close 
  2257. Pen 15
  2258. Clw 
  2259. If LMEM=False
  2260.    On Error Goto DISK_READ_ERROR_LOWRES
  2261.    Load "data/spell5.abk"
  2262.    On Error Goto BBER
  2263. End If 
  2264. Unpack 5 To 1
  2265. Flash Off 
  2266. Curs Off 
  2267. Scroll Off 
  2268. Ink 1
  2269. Bar 176,0 To 272,26
  2270. Bar 272,0 To 274,25
  2271. Pen 6
  2272. Paper 12
  2273. Locate 0,23 : Centre "Type in the word"
  2274. Paste Bob 11*16,100,2
  2275. Bob 15,21,0,96
  2276. Amal 15,"Anim 0,(96,5)(97,5)(98,5)(99,5)(100,5)(101,5)"
  2277. Amal On 15
  2278. Bob 14,34,66,102
  2279. Amal 14,"Anim 0,(102,5)(103,5)(104,5)(105,5)"
  2280. Amal On 14
  2281. Pen 15
  2282. Paper 0
  2283. Locate 14,4 : Print Left$(MNU$(1,LEVEL),1)
  2284. Gosub DISPLAY_TIME
  2285. Locate 10,14 : Print MAGICL$
  2286. Locate 10,17 : Print "-----"
  2287. COUNT=0
  2288. MAIN_TRANSFORM_LOOP:
  2289. ANSWER$=Left$(MAGICA$,2-LEVEL)
  2290. X_TEXT=5
  2291. Y_TEXT=12
  2292. CLUEXP=1
  2293. If LEVEL<>2
  2294.    For ZZZZ=1 To 2-LEVEL
  2295.       ENLEV=True
  2296.       Gosub TRANSFORM_HELP
  2297.       ENLEV=False
  2298.    Next ZZZZ
  2299. End If 
  2300. Clear Key 
  2301. TRANSFORM_LOOP:
  2302. Pen 15
  2303. Paper 0
  2304. Locate 10,16 : Print ANSWER$;"_      "
  2305. Repeat 
  2306.    K$=Lower$(Inkey$)
  2307.    K=Scancode
  2308.    Gosub CLOCK_PRINT
  2309. Until(K$<>"" or K<>0)
  2310. If((K$>="a") and(K$<="z") and Len(ANSWER$)<5)
  2311.    ANSWER$=ANSWER$+K$
  2312.    Goto TRANSFORM_LOOP
  2313. Else 
  2314.    If((K$=Chr$(8)) and Len(ANSWER$)>2-LEVEL)
  2315.       ANSWER$=Left$(ANSWER$,Len(ANSWER$)-1)
  2316.       Goto TRANSFORM_LOOP
  2317.    Else 
  2318.       If((K$=Chr$(13)) and Len(ANSWER$)=5)
  2319.          Goto CHECK_TRANSFORM_ANSWER
  2320.       Else 
  2321.         If(K=$50)
  2322.            Gosub TRANSFORM_HELP
  2323.          Goto TRANSFORM_LOOP
  2324.       End If 
  2325.       End If 
  2326.    End If 
  2327. End If 
  2328. Gosub DULL_THUD
  2329. Goto TRANSFORM_LOOP
  2330. CHECK_TRANSFORM_ANSWER:
  2331. If ANSWER$<>MAGICA$
  2332.    Gosub DULL_THUD
  2333.    Inc COUNT
  2334.    If COUNT=3
  2335.       Gosub WRONG_FINAL_ANSWER
  2336.       Goto GAME_END
  2337.    Else 
  2338.       Goto MAIN_TRANSFORM_LOOP
  2339.    End If 
  2340. End If 
  2341. Pen 15
  2342. Paper 6
  2343. Locate 0,22
  2344. Print Space$(44);"You've done it! Henry's changing!";Space$(43)
  2345. Ink 15
  2346. Box 2,178 To 317,197
  2347. Volume 63
  2348. For I=0 To 30 Step 2
  2349.    Ink 0
  2350.    Wait Vbl 
  2351.    Bar 172,64 To 288,175
  2352.    Paste Bob 11*16,64,3
  2353.    Wait 31-I
  2354.    Gosub DROPPING_TONE
  2355.    Ink 0
  2356.    Wait Vbl 
  2357.    Bar 172,64 To 288,175
  2358.    Paste Bob 11*16,100,2
  2359.    Wait 31-I
  2360.    Gosub DROPPING_TONE
  2361. Next I
  2362. Wait Vbl 
  2363. Bar 172,64 To 288,175
  2364. Paste Bob 11*16,64,3
  2365. For I=10 To 50 Step 2
  2366.    Gosub RISING_TONE
  2367. Next I
  2368. GAME_END:
  2369. Volume 0
  2370. Pen 15
  2371. Paper 6
  2372. Locate 0,22
  2373. Print Space$(42);"Press <Space> to see the best scores";Space$(42)
  2374. Ink 15
  2375. Box 2,178 To 317,197
  2376. Clear Key 
  2377. Repeat : Until Inkey$=" "
  2378. Bob Off 14
  2379. Bob Off 15
  2380. Update 
  2381. GAME_END=True
  2382. Gosub INSERT_SCORE
  2383. Gosub STORE_HIGH_SCORES
  2384. Goto DISPLAY_HIGH_SCORES
  2385. WRONG_FINAL_ANSWER:
  2386. Gosub WRONG_SOUND
  2387. Hide On 
  2388. Get Cblock 1,0,20*8,320,40
  2389. Paper 6
  2390. For I=20 To 24
  2391.    Locate 0,I
  2392.    Print Space$(40)
  2393. Next I
  2394. Ink 15
  2395. Box 2,162 To 317,197
  2396. Pen 5
  2397. Locate 0,21
  2398. Centre "The correct answer is "+Space$(Len(MAGICA$))
  2399. Pen 8
  2400. Locate 28-((Len(MAGICA$)-5)/2),21 : Print MAGICA$
  2401. Pen 6
  2402. Paper 5
  2403. Locate 0,23 : Centre " Press <Space> to continue "
  2404. Clear Key 
  2405. Repeat 
  2406. Until Inkey$=" "
  2407. Put Cblock 1
  2408. Update 
  2409. Put Cblock 1
  2410. Update 
  2411. Del Cblock 1
  2412. Return 
  2413. TRANSFORM_HELP:
  2414. I=CLUEXP
  2415. If I>5
  2416.    I=Rnd(4)+1
  2417.    Goto TRANSFORM_CLUE
  2418. Else 
  2419.    Inc CLUEXP
  2420. End If 
  2421. LP=Instr(MAGICL$,Mid$(MAGICA$,I,1),I)
  2422. If LP=0 Then Goto TRANSFORM_CLUE
  2423. A$=Mid$(MAGICL$,LP,1)
  2424. B$=Mid$(MAGICL$,I,1)
  2425. Mid$(MAGICL$,LP,1)=B$
  2426. Mid$(MAGICL$,I,1)=A$
  2427. Locate 10,14
  2428. Print MAGICL$
  2429. TRANSFORM_CLUE:
  2430. If ENLEV=False
  2431.    Pen 6
  2432.    Paper 12
  2433.    Locate 0,23
  2434.    Centre "Position '"+Str$(I)-" "+"' is '"+Mid$(MAGICA$,I,1)+"'"
  2435.    Gosub CLUE_PENALTY
  2436.    Pen 6
  2437.    Paper 12
  2438.    Locate 0,23
  2439.    Centre Space$(22)
  2440.    Locate 0,23 : Centre "Type in the word"
  2441.    Paper 0
  2442. End If 
  2443. Return 
  2444. DROPPING_TONE:
  2445. If SOUND=1 Then Play 45-I,1
  2446. Return 
  2447. RISING_TONE:
  2448. If SOUND=1 Then Play 20+I,2
  2449. Return 
  2450. NOISE_BELL:
  2451. If SOUND=1 Then Bell 
  2452. Return 
  2453. DULL_THUD:
  2454. Volume 63
  2455. Play 10,0
  2456. Wait 10
  2457. Volume 0
  2458. Return 
  2459. WRONG_SOUND:
  2460. If SOUND=1
  2461.    Volume 63
  2462.    For I=30 To 40
  2463.       Play I,4
  2464.       Wait 1
  2465.    Next I
  2466.    For I=38 To 20 Step -4
  2467.       Play I+5,4
  2468.       Wait 1
  2469.    Next I
  2470.    Volume 0
  2471. End If 
  2472. Return 
  2473. RANDOM_SOUND:
  2474. If SOUND=1
  2475.    Volume 63
  2476.    Play 40+Rnd(5),2
  2477.    Volume 0
  2478. End If 
  2479. Return 
  2480. BONG_SOUND:
  2481. If SOUND=1
  2482.    Volume 63
  2483.    Play 10,1
  2484.    Wait 1
  2485.    Volume 0
  2486.    Wait 2
  2487. End If 
  2488. Return 
  2489. FONT_ENQUIRY:
  2490. On Error Goto DISK_READ_ERROR_LOWRES
  2491. Get Fonts 
  2492. FONT_NUMBER=0
  2493. Repeat 
  2494.    Inc TEMP
  2495.    If(Left$(Font$(TEMP),12)="courier.font") and(Mid$(Font$(TEMP),30,3)=" 15") Then FONT_NUMBER=TEMP
  2496. Until TEMP>64 or FONT_NUMBER<>0
  2497. On Error Goto BBER
  2498. Gosub RETRIEVE_HIGH_SCORES
  2499. Return 
  2500. Procedure CLEAR_BANKS
  2501.    For I=1 To 14
  2502.       Erase I
  2503.    Next 
  2504. End Proc
  2505. Procedure LOONY_TUNE[TUNE]
  2506.    Volume 63
  2507.    If TUNE=4
  2508.       Set Envel 1,0 To 1,63
  2509.       Set Envel 1,1 To 10,51
  2510.       Set Envel 1,2 To 70,51
  2511.       Set Envel 1,3 To 120,0
  2512.    Else 
  2513.       Set Envel 1,0 To 1,63
  2514.       Set Envel 1,1 To 4,51
  2515.       Set Envel 1,2 To 25,40
  2516.       Set Envel 1,3 To 20,0
  2517.    End If 
  2518.    If TUNE=2
  2519.       T#=35
  2520.       Restore TUNE2_NOTES
  2521.       Goto TUNE2_PLAY
  2522.    Else 
  2523.       If TUNE=3
  2524.          T#=40
  2525.          Restore TUNE3_NOTES
  2526.          Goto TUNE3_PLAY
  2527.       Else 
  2528.          If TUNE=4
  2529.             T#=17.5
  2530.             Restore TUNE4_NOTES
  2531.             Goto TUNE4_PLAY
  2532.          End If 
  2533.       End If 
  2534.    End If 
  2535.    Goto EXYT
  2536.    TUNE2_PLAY:
  2537.    Do 
  2538.       Read P,D#
  2539.       Exit If P=-1 or D#=-1
  2540.       I=(1/D#)*T#
  2541.       Play P,I
  2542.       W=0
  2543.       Repeat 
  2544.          K$=Inkey$
  2545.          Inc W
  2546.          Wait 1
  2547.       Until W=I or(K$=" ")
  2548.       Exit If K$=" "
  2549.    Loop 
  2550.    If K$<>" " Then Restore TUNE2RPT : Goto TUNE2_PLAY
  2551.    Goto EXYT
  2552.    TUNE3_PLAY:
  2553.    Do 
  2554.       Read P,D#
  2555.       Exit If P=-1 or D#=-1
  2556.       I=(1/D#)*T#
  2557.       Play P,I
  2558.       W=0
  2559.       Repeat 
  2560.          K$=Inkey$
  2561.          Inc W
  2562.          Wait 1
  2563.       Until W=I or(K$=" ")
  2564.       Exit If K$=" "
  2565.    Loop 
  2566.    If K$<>" " Then Restore TUNE3_NOTES : Goto TUNE3_PLAY
  2567.    Goto EXYT
  2568.    TUNE4_PLAY:
  2569.    Do 
  2570.       Read P,D#
  2571.       Exit If P=-1 or D#=-1
  2572.       I=(1/D#)*T#
  2573.       Play P,I
  2574.       W=0
  2575.       Repeat 
  2576.          K$=Inkey$
  2577.          Inc W
  2578.          Wait 1
  2579.       Until W=I or(K$=" ")
  2580.       Exit If K$=" "
  2581.    Loop 
  2582.    Goto EXYT
  2583.    TUNE2_NOTES:
  2584.    Data 60,8
  2585.    TUNE2RPT:
  2586.    Data 56,8,56,4,61,8,65,8,65,4,63,8,60,8,60,8,56,8
  2587.    Data 58,2,60,8,56,8,56,4,61,8,65,8,65,4,63,8,60,8
  2588.    Data 61,16,60,16,58,8,56,8,51,8,53,8,55,8,-1,-1
  2589.    TUNE3_NOTES:
  2590.    Data 59,8,55,8,55,4,48,8,52,8,52,4,54,8,54,8,52,8
  2591.    Data 54,8,52,8,50,8,50,4,59,8,55,8,55,4,48,8,52,8
  2592.    Data 52,4,54,8,54,8,52,8,54,8,55,2,-1,-1
  2593.    TUNE4_NOTES:
  2594.    Data 48,4,51,2,56,1,48,4,51,2,56,1,48,4,51,2,49,2
  2595.    Data 49,2,51,4,49,4,48,4,46,1,48,4,51,2,44,1,48,4
  2596.    Data 51,2,49,1,49,4,53,2,51,1,44,2,43,2,44,2,46,2,44,1
  2597.    Data -1,-1
  2598.    EXYT:
  2599.    Set Envel 1,2 To 1,0
  2600.    Set Envel 1,3 To 1,0
  2601. End Proc[K$]
  2602. Procedure DEMO_MESSAGE[T1$,S1$,S2$,S3$,S4$]
  2603. Freeze : Synchro Off 
  2604. Bell 
  2605. Screen Open 7,320,90,4,Lowres : Curs Off : Palette ,$F0,$F00,$FF0 : Cls 0
  2606. Screen Display 7,,,,
  2607. Ink 2 : Bar 0,0 To 320,90 : Ink 1 : Box 2,2 To 318,88 : Paper 2
  2608. Locate 1,1 : Pen 1 : Print "DEMO VERSION: ";T1$
  2609. Pen 0 : Locate 1,3 : Print S1$
  2610. Locate 1,4 : Print S2$
  2611. Locate 1,5 : Print S3$
  2612. Locate 1,6 : Print S4$
  2613. Pen 1 : Locate 8,9 : Print "Press <Space> to continue"
  2614. Clear Key : Wait Key 
  2615. Screen Close 7 : Update On : Synchro On 
  2616. End Proc
  2617. BBER:
  2618. DEMO_MESSAGE["Error Occured","An error from which the DEMO cannot","recover has occured.  The error was","number"+Str$(Errn)+".  Press any key to return","to the Workbench."]
  2619. End